From 505e8a9d219dec5981d9f1d565040af6b1b1f3f3 Mon Sep 17 00:00:00 2001 From: IgorA Date: Sat, 5 Dec 2020 10:14:15 +0000 Subject: [PATCH] bcc32: add example boxlib_1 git-svn-id: svn://kolibrios.org@8325 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/bcc32/examples/boxlib_1/Makefile | 19 ++ programs/bcc32/examples/boxlib_1/boxlib_1.cpp | 78 +++++++ .../bcc32/examples/boxlib_1/boxlib_1_cpp.bat | 15 ++ programs/bcc32/include/l_box_lib.h | 191 ++++++++++++++++++ programs/bcc32/include/load_lib.h | 2 +- 5 files changed, 304 insertions(+), 1 deletion(-) create mode 100644 programs/bcc32/examples/boxlib_1/Makefile create mode 100644 programs/bcc32/examples/boxlib_1/boxlib_1.cpp create mode 100644 programs/bcc32/examples/boxlib_1/boxlib_1_cpp.bat create mode 100644 programs/bcc32/include/l_box_lib.h diff --git a/programs/bcc32/examples/boxlib_1/Makefile b/programs/bcc32/examples/boxlib_1/Makefile new file mode 100644 index 0000000000..3d1bdb85c2 --- /dev/null +++ b/programs/bcc32/examples/boxlib_1/Makefile @@ -0,0 +1,19 @@ +# Path to /programs +SVN_PROGR:=../../.. + +# Path to /programs/bcc32 +SVN_BCC32:=$(SVN_PROGR)/bcc32 + +# Path to t2fasm +T2FASM:=$(SVN_BCC32)/t2fasm + +# Path to include +INCLUDE:=$(SVN_BCC32)/include + +# Path to Bin folder +KOS32_BCC:=/home/autobuild/borlandcpp/bin + +# Filename without .cpp +FILENAME:=boxlib_1 + +include $(SVN_BCC32)/Makefile_app diff --git a/programs/bcc32/examples/boxlib_1/boxlib_1.cpp b/programs/bcc32/examples/boxlib_1/boxlib_1.cpp new file mode 100644 index 0000000000..e2aec57889 --- /dev/null +++ b/programs/bcc32/examples/boxlib_1/boxlib_1.cpp @@ -0,0 +1,78 @@ +#include +#include +#include +#include + +using namespace Kolibri; + +const char header[] = "Boxlib example 1"; +char library_path[2048]; + +void* mouse_dd; +char str1[22]; +char str2[22]; +char str3[22] = "+380"; + +edit_box edit1 = { 100, 62, 10, 0xffffff, 0xa0a0a0, 0xff, 0, 0, 20, str1, &mouse_dd, ed_focus }; +edit_box edit2 = { 100, 62, 30, 0xffffff, 0xa0a0a0, 0xff, 0, 0, 20, str2, &mouse_dd }; +edit_box edit3 = { 100, 62, 50, 0xffffff, 0xa0a0a0, 0xff, 0, 0, 20, str3, &mouse_dd, 0, 4 }; + +char str4[] = "CheckBox 1"; +char str5[] = "CheckBox 2"; + +check_box check1 = { {15, 10, 12, 80}, 8, 0xffffff, 0x80, 0, str4, ch_flag_middle+ch_flag_en }; +check_box check2 = { {15, 10, 20, 100}, 8, 0xffffff, 0x80, 0, str5, ch_flag_middle }; + +namespace Kolibri{ + char CurrentDirectoryPath[2048]; +} + +bool KolibriOnStart(TStartData &kos_start, TThreadData /*th*/) +{ + kos_start.Left = 10; + kos_start.Top = 40; + kos_start.Width = 280; + kos_start.Height = 200; + kos_start.WinData.WindowColor = 0xd0d0d0; + kos_start.WinData.WindowType = 0x33; // 0x34 - fixed, 0x33 - not fixed + kos_start.WinData.Title = header; + if(LoadLibrary("box_lib.obj", library_path, "/sys/lib/box_lib.obj", &import_box_lib)) + { + check_box_init(&check1); + check_box_init(&check2); + } + return true; +} + +void KolibriOnPaint(void) +{ + DrawText(10,14,0,"Surname:"); + edit_box_draw(&edit1); + DrawText(10,34,0,"Name:"); + edit_box_draw(&edit2); + DrawText(10,54,0,"Phone:"); + edit_box_draw(&edit3); + + check_box_draw(&check1); + check_box_draw(&check2); +} + +void KolibriOnKeyPress(TThreadData th) +{ + asm{ + mcall SF_GET_KEY + } + edit_box_key(&edit1); + edit_box_key(&edit2); + edit_box_key(&edit3); +} + +void KolibriOnMouse(TThreadData th) +{ + edit_box_mouse(&edit1); + edit_box_mouse(&edit2); + edit_box_mouse(&edit3); + + check_box_mouse(&check1); + check_box_mouse(&check2); +} diff --git a/programs/bcc32/examples/boxlib_1/boxlib_1_cpp.bat b/programs/bcc32/examples/boxlib_1/boxlib_1_cpp.bat new file mode 100644 index 0000000000..7e8be0285d --- /dev/null +++ b/programs/bcc32/examples/boxlib_1/boxlib_1_cpp.bat @@ -0,0 +1,15 @@ +Set NAME=boxlib_1 +Set BCC_DIR=..\..\..\bcc32 +kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp + +echo STACKSIZE equ 8192> kos_make.inc +echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc +echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc +echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc + +echo include "kos_make.inc" > f_%NAME%.asm +t2fasm < %NAME%.asm >> f_%NAME%.asm +fasm f_%NAME%.asm %NAME%.kex +if exist %NAME%.kex kpack %NAME%.kex +if exist %NAME%.kex del kos_make.inc +pause diff --git a/programs/bcc32/include/l_box_lib.h b/programs/bcc32/include/l_box_lib.h new file mode 100644 index 0000000000..9abba891db --- /dev/null +++ b/programs/bcc32/include/l_box_lib.h @@ -0,0 +1,191 @@ +#ifndef __L_BOX_LIB_H_INCLUDED_ +#define __L_BOX_LIB_H_INCLUDED_ +// +// box_lib.obj +// + +const long ed_pass = 1; //password mode +const long ed_focus = 2; //active +const long ed_shift = 4; //shift holded +const long ed_shift_on = 8; //selection active +const long ed_shift_bac = 16; //clear selection +const long ed_left_fl = 32; +const long ed_offset_fl = 64; +const long ed_insert = 128; +const long ed_mouse_on = 256; +const long ed_ctrl_on = 512; +const long ed_alt_on = 0x400; +const long ed_disabled = 0x800; +const long ed_always_focus = 0x4000; +const long ed_figure_only = 0x8000; +const long ed_mous_adn_b = ed_mouse_on | ed_shift_on | ed_shift_bac; +const long ed_shift_off = ! ed_shift; +const long ed_shift_mcl = ! ed_shift; +const long ed_shift_on_off = ! ed_shift_on; +const long ed_shift_bac_cl = ! ed_shift_bac; +const long ed_shift_cl = ! (ed_shift | ed_shift_on | ed_shift_bac); +const long ed_right_fl = ! ed_left_fl; +const long ed_offset_cl = ! ed_offset_fl; +const long ed_insert_cl = ! ed_insert; +const long ed_mouse_on_off = ! ed_mouse_on; +const long ed_ctrl_off = ! ed_ctrl_on; +const long ed_alt_off = ! ed_alt_on; + +struct edit_box +{ + long width; + long left; + long top; + long color; + long shift_color; + long focus_border_color; + long blur_border_color; + long text_color; + long max; + char* text; + void* mouse_variable; + long flags; + long size; + long pos; + long offset; + short int cl_curs[2]; // x, y + short int shift[2]; + long height; + long char_width; +}; + +const long ch_flag_en = 2; +const long ch_flag_top = 0; +const long ch_flag_middle = 4; +const long ch_flag_bottom = 8; + +struct check_box +{ + short int rect[4]; // width, left, height, top + long text_margin; + long color; + long border_color; + long text_color; + char* text; + long flags; + long size_of_str; +}; + +// +// box_lib - import table +// +void (__stdcall* import_box_lib)() = (void (__stdcall*)())&"lib_init"; +//&"version"; + +void (__stdcall* edit_box_draw)(edit_box* edit) = (void (__stdcall*)(edit_box*))&"edit_box"; +void (__stdcall* edit_box_key)(edit_box* edit) = (void (__stdcall*)(edit_box*))&"edit_box_key"; +void (__stdcall* edit_box_mouse)(edit_box* edit) = (void (__stdcall*)(edit_box*))&"edit_box_mouse"; +void (__stdcall* edit_box_set_text)(edit_box* edit, char* text) = (void (__stdcall*)(edit_box*, char*))&"edit_box_set_text"; +//&"version_ed"; + +void (__stdcall* check_box_init)(check_box* check) = (void (__stdcall*)(check_box*))&"init_checkbox2"; +void (__stdcall* check_box_draw)(check_box* check) = (void (__stdcall*)(check_box*))&"check_box_draw2"; +void (__stdcall* check_box_mouse)(check_box* check) = (void (__stdcall*)(check_box*))&"check_box_mouse2"; +//&"version_ch2"; + +//void (__stdcall* option_box_draw)(...) = (void (__stdcall*)(...))&"option_box_draw"; +//void (__stdcall* option_box_mouse)(...) = (void (__stdcall*)(...))&"option_box_mouse"; +//&"version_op"; + +//void (__stdcall* scrollbar_v_draw)(...) = (void (__stdcall*)(...))&"scrollbar_v_draw"; +//void (__stdcall* scrollbar_v_mouse)(...) = (void (__stdcall*)(...))&"scrollbar_v_mouse"; +//void (__stdcall* scrollbar_h_draw)(...) = (void (__stdcall*)(...))&"scrollbar_h_draw"; +//void (__stdcall* scrollbar_h_mouse)(...) = (void (__stdcall*)(...))&"scrollbar_h_mouse"; +//&"version_scrollbar"; + +//void (__stdcall* dbutton_draw)(...) = (void (__stdcall*)(...))&"dbutton_draw"; +//void (__stdcall* dbutton_mouse)(...) = (void (__stdcall*)(...))&"dbutton_mouse"; +//&"version_dbutton"; + +//void (__stdcall* menu_bar_draw)(...) = (void (__stdcall*)(...))&"menu_bar_draw"; +//void (__stdcall* menu_bar_mouse)(...) = (void (__stdcall*)(...))&"menu_bar_mouse"; +//void (__stdcall* menu_bar_activate)(...) = (void (__stdcall*)(...))&"menu_bar_activate"; +//&"version_menu_bar"; + +//void (__stdcall* FileBrowser_draw)(...) = (void (__stdcall*)(...))&"FileBrowser_draw"; +//void (__stdcall* FileBrowser_mouse)(...) = (void (__stdcall*)(...))&"FileBrowser_mouse"; +//void (__stdcall* FileBrowser_key)(...) = (void (__stdcall*)(...))&"FileBrowser_key"; +//&"version_FileBrowser"; + +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_data_init"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_data_clear"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_info_clear"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_key"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_mouse"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_draw"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_info_undo"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_info_redo"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_add"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_set_data"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_get_data"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_delete"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_cur_beg"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_cur_next"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_cur_perv"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_close_open"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_lev_inc"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_lev_dec"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_move_up"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_move_down"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_poi_get_info"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_poi_get_next_info"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_node_poi_get_data"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_save_mem"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_load_mem"; +//void (__stdcall* ...)(...) = (void (__stdcall*)(...))&"tl_get_mem_size"; +//&"version_tree_list"; + +//void (__stdcall* PathShow_prepare)(...) = (void (__stdcall*)(...))&"PathShow_prepare"; +//void (__stdcall* PathShow_draw)(...) = (void (__stdcall*)(...))&"PathShow_draw"; +//&"version_PathShow"; + +//void (__stdcall* ted_but_sumb_upper)(...) = (void (__stdcall*)(...))&"ted_but_sumb_upper"; +//void (__stdcall* ted_but_sumb_lover)(...) = (void (__stdcall*)(...))&"ted_but_sumb_lover"; +//void (__stdcall* ted_but_convert_by_table)(...) = (void (__stdcall*)(...))&"ted_but_convert_by_table"; +//void (__stdcall* ted_can_save)(...) = (void (__stdcall*)(...))&"ted_can_save"; +//void (__stdcall* ted_clear)(...) = (void (__stdcall*)(...))&"ted_clear"; +//void (__stdcall* ted_delete)(...) = (void (__stdcall*)(...))&"ted_delete"; +//void (__stdcall* ted_draw)(...) = (void (__stdcall*)(...))&"ted_draw"; +//void (__stdcall* ted_init)(...) = (void (__stdcall*)(...))&"ted_init"; +//void (__stdcall* ted_init_scroll_bars)(...) = (void (__stdcall*)(...))&"ted_init_scroll_bars"; +//void (__stdcall* ted_init_syntax_file)(...) = (void (__stdcall*)(...))&"ted_init_syntax_file"; +//void (__stdcall* ted_is_select)(...) = (void (__stdcall*)(...))&"ted_is_select"; +//void (__stdcall* ted_key)(...) = (void (__stdcall*)(...))&"ted_key"; +//void (__stdcall* ted_mouse)(...) = (void (__stdcall*)(...))&"ted_mouse"; +//void (__stdcall* ted_open_file)(...) = (void (__stdcall*)(...))&"ted_open_file"; +//void (__stdcall* ted_save_file)(...) = (void (__stdcall*)(...))&"ted_save_file"; +//void (__stdcall* ted_text_add)(...) = (void (__stdcall*)(...))&"ted_text_add"; +//void (__stdcall* ted_but_select_word)(...) = (void (__stdcall*)(...))&"ted_but_select_word"; +//void (__stdcall* ted_but_cut)(...) = (void (__stdcall*)(...))&"ted_but_cut"; +//void (__stdcall* ted_but_copy)(...) = (void (__stdcall*)(...))&"ted_but_copy"; +//void (__stdcall* ted_but_paste)(...) = (void (__stdcall*)(...))&"ted_but_paste"; +//void (__stdcall* ted_but_undo)(...) = (void (__stdcall*)(...))&"ted_but_undo"; +//void (__stdcall* ted_but_redo)(...) = (void (__stdcall*)(...))&"ted_but_redo"; +//void (__stdcall* ted_but_reverse)(...) = (void (__stdcall*)(...))&"ted_but_reverse"; +//void (__stdcall* ted_but_find)(...) = (void (__stdcall*)(...))&"ted_but_find"; +//void (__stdcall* ted_but_replace)(...) = (void (__stdcall*)(...))&"ted_but_replace"; +//void (__stdcall* ted_text_colored)(...) = (void (__stdcall*)(...))&"ted_text_colored"; +//void (__stdcall* ted_go_to_position)(...) = (void (__stdcall*)(...))&"ted_go_to_position"; +//&"version_text_edit"; + +//void (__stdcall* frame_draw)(...) = (void (__stdcall*)(...))&"frame_draw"; +//&"version_frame"; + +//void (__stdcall* progressbar_draw)(...) = (void (__stdcall*)(...))&"progressbar_draw"; +//void (__stdcall* progressbar_progress)(...) = (void (__stdcall*)(...))&"progressbar_progress"; + +//void (__stdcall* tooltip_init)(...) = (void (__stdcall*)(...))&"tooltip_init"; +//void (__stdcall* tooltip_delete)(...) = (void (__stdcall*)(...))&"tooltip_delete"; +//void (__stdcall* tooltip_test_show)(...) = (void (__stdcall*)(...))&"tooltip_test_show"; +//void (__stdcall* tooltip_mouse)(...) = (void (__stdcall*)(...))&"tooltip_mouse"; +//void (__stdcall* get_font_size)(...) = (void (__stdcall*)(...))&"get_font_size"; +asm{ + dd 0,0 +} + +#endif \ No newline at end of file diff --git a/programs/bcc32/include/load_lib.h b/programs/bcc32/include/load_lib.h index e60106c4f0..95d9775eeb 100644 --- a/programs/bcc32/include/load_lib.h +++ b/programs/bcc32/include/load_lib.h @@ -7,7 +7,7 @@ asm{ @use_library mem.Alloc,mem.Free,mem.ReAlloc,dll.Load } -bool LoadLibrary(const char* lib_name, char* lib_path, const char* system_path, void* myimport) +bool LoadLibrary(const char* /*lib_name*/, char* /*lib_path*/, const char* /*system_path*/, void* /*myimport*/) { asm{ load_library [ebp+8], [ebp+12], [ebp+16], [ebp+20]