From b945555ce2f56f677c0900e6f3d7e47aab6d5929 Mon Sep 17 00:00:00 2001 From: IgorA Date: Sun, 18 May 2025 15:34:48 +0300 Subject: [PATCH] CtrlDemo, EditboxEx, TooltipDemo: - code cleaning, library import optimization --- .../libraries/box_lib/asm/trunk/ctrldemo.asm | 65 +++++++------- .../libraries/box_lib/asm/trunk/data.inc | 88 +------------------ .../box_lib/asm/trunk/editbox_ex.asm | 34 +------ .../box_lib/asm/trunk/tooltip_demo.asm | 53 ++++------- 4 files changed, 55 insertions(+), 185 deletions(-) diff --git a/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm b/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm index 062a457fd..66e0c5f64 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm +++ b/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm @@ -49,9 +49,9 @@ include '../../../../../load_lib.mac' ;--- Start of program ---------------------------------------------- ;--------------------------------------------------------------------- START: - mcall 68,11 - mcall 66,1,1 - mcall 40,0x27 + mcall SF_SYS_MISC,SSF_HEAP_INIT + mcall SF_KEYBOARD,SSF_SET_INPUT_MODE,1 + mcall SF_SET_EVENTS_MASK,0x27 ;--------------------------------------------------------------------- load_libraries l_libs_start,end_l_libs @@ -84,7 +84,7 @@ load_libraries l_libs_start,end_l_libs copy_path icons_file_name,path,library_path,0 - mcall 70,fileinfo + mcall SF_FILE,fileinfo mov [fileinfo+0],dword 0 @@ -93,14 +93,14 @@ load_libraries l_libs_start,end_l_libs mov [img_size],ecx - mcall 68,12 + mcall SF_SYS_MISC,SSF_MEM_ALLOC mov [fileinfo+16],eax mov [image_file],eax - mcall 70,fileinfo + mcall SF_FILE,fileinfo xor eax,eax mov [return_code],eax @@ -108,8 +108,7 @@ load_libraries l_libs_start,end_l_libs push image_file call [cnv_png_import.Start] - mov ecx,[image_file] - mcall 68,13, + mcall SF_SYS_MISC,SSF_MEM_FREE,[image_file] cmp [return_code],dword 0 jne button.exit @@ -151,28 +150,28 @@ load_libraries l_libs_start,end_l_libs red: call draw_window still: - mcall 10 + mcall SF_WAIT_EVENT - cmp eax,1 + cmp eax,EV_REDRAW je red - cmp eax,2 + cmp eax,EV_KEY je key - cmp eax,3 + cmp eax,EV_BUTTON je button - cmp eax,6 + cmp eax,EV_MOUSE je mouse jmp still ;--------------------------------------------------------------------- key: - mcall 2 + mcall SF_GET_KEY jmp still ;--------------------------------------------------------------------- button: - mcall 17 + mcall SF_GET_BUTTON cmp ah,1 jne still .exit: - mcall -1 + mcall SF_TERMINATE_PROCESS ;--------------------------------------------------------------------- mouse: ;----------------------------------------------- @@ -184,7 +183,7 @@ mouse: jbe .horizontal ; mouse event for Vertical ScrollBar push dword scroll_bar_data_vertical - call [scrollbar_ver_mouse] + call [scrollbar_v_mouse] mov eax,scroll_bar_data_vertical.redraw xor ebx,ebx cmp [eax],ebx @@ -200,7 +199,7 @@ mouse: jbe .other ; mouse event for Horizontal ScrollBar push dword scroll_bar_data_horizontal - call [scrollbar_hor_mouse] + call [scrollbar_h_mouse] mov eax,scroll_bar_data_horizontal.redraw xor ebx,ebx cmp [eax],ebx @@ -240,7 +239,7 @@ mouse: .mouse_dinamic_button: ; mouse event for Dinamic Button 1 push dword dinamic_button_data_1 - call [dinamic_button_mouse] + call [dbutton_mouse] mov eax,dinamic_button_data_1.click cmp [eax],dword 1 jne @f @@ -249,7 +248,7 @@ mouse: @@: ; mouse event for Dinamic Button 2 push dword dinamic_button_data_2 - call [dinamic_button_mouse] + call [dbutton_mouse] mov eax,dinamic_button_data_2.click cmp [eax],dword 1 jne still ;@f @@ -283,7 +282,7 @@ analyse_out_menu_2: jmp still ;--------------------------------------------------------------------- about: - mcall 51,1,thread3,thread + mcall SF_CREATE_THREAD,1,thread3,thread jmp still ;--------------------------------------------------------------------- OpenDialog_start_0: @@ -320,9 +319,9 @@ OpenDialog_start: ;--------------------------------------------------------------------- ;--------------------------------------------------------------------- draw_window: - mcall 12,1 - mcall 0,<0,400>,<0,400>,0x03AABBCC,0x805080D0,0x005080D0 - mcall 71,1,header_1 + mcall SF_REDRAW,SSF_BEGIN_DRAW + mcall SF_CREATE_WINDOW,<0,400>,<0,400>,0x03AABBCC,0x805080D0,0x005080D0 + mcall SF_SET_CAPTION,1,header_1 ;--------------------------------------------- ; draw for Menu 1 push dword menu_data_1 @@ -333,15 +332,15 @@ draw_window: ;--------------------------------------------- ; draw for Dinamic Button 1 push dword dinamic_button_data_1 - call [dinamic_button_draw] + call [dbutton_draw] ; draw for Dinamic Button 2 push dword dinamic_button_data_2 - call [dinamic_button_draw] + call [dbutton_draw] ;--------------------------------------------- - mcall 13,<170,200>,<25,15>,0xffffb0 + mcall SF_DRAW_RECT,<170,200>,<25,15>,0xffffb0 ; mov bx,28 ; add ebx,2 shl 16 -; mcall 4,,0xC0000000,text_work_area,,0xffffb0 +; mcall SF_DRAW_TEXT,,0xC0000000,text_work_area,,0xffffb0 ; draw for PathShow push dword PathShow_data_1 call [PathShow_draw] @@ -357,21 +356,21 @@ draw_window: ; draw for Vertical ScrollBar push dword scroll_bar_data_vertical - call [scrollbar_ver_draw] + call [scrollbar_v_draw] ; draw for Horizontal ScrollBar push dword scroll_bar_data_horizontal - call [scrollbar_hor_draw] + call [scrollbar_h_draw] ; reset all_redraw flag xor eax,eax mov [scroll_bar_data_vertical.all_redraw],eax mov [scroll_bar_data_horizontal.all_redraw],eax ;--------------------------------------------- call draw_cube - mcall 12,2 + mcall SF_REDRAW,SSF_END_DRAW ret ;--------------------------------------------------------------------- draw_cube: - mcall 13,<30,301>,<50,301>,0xafafaf + mcall SF_DRAW_RECT,<30,301>,<50,301>,0xafafaf mov ecx,[scroll_bar_data_vertical.position] add ecx,50 shl ecx,16 @@ -380,7 +379,7 @@ draw_cube: add ebx,30 shl ebx,16 mov bx,30 - mcall 13,,,0x0 + mcall SF_DRAW_RECT,,,0x0 ret ;--------------------------------------------------------------------- include 'data.inc' diff --git a/programs/develop/libraries/box_lib/asm/trunk/data.inc b/programs/develop/libraries/box_lib/asm/trunk/data.inc index 39c2d8c7e..4260443ee 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/data.inc +++ b/programs/develop/libraries/box_lib/asm/trunk/data.inc @@ -30,7 +30,7 @@ system_dir_ProcLib db '/sys/lib/proc_lib.obj',0 align 4 l_libs_start: library01 l_libs system_dir_Boxlib+9, file_name, system_dir_Boxlib,\ - Box_lib_import, plugins_directory + import_box_lib, plugins_directory library02 l_libs system_dir_CnvPNG+9, file_name, system_dir_CnvPNG,\ cnv_png_import, plugins_directory @@ -126,91 +126,7 @@ deflate_unpack dd 0 ;--------------------------------------------------------------------- ;--------------------------------------------------------------------- -align 4 -Box_lib_import: -;init_lib dd a_init -;version_lib dd a_version - - -;edit_box_draw dd aEdit_box_draw -;edit_box_key dd aEdit_box_key -;edit_box_mouse dd aEdit_box_mouse -;version_ed dd aVersion_ed - -;check_box_draw dd aCheck_box_draw -;check_box_mouse dd aCheck_box_mouse -;version_ch dd aVersion_ch - -;option_box_draw dd aOption_box_draw -;option_box_mouse dd aOption_box_mouse -;version_op dd aVersion_op - -scrollbar_ver_draw dd aScrollbar_ver_draw -scrollbar_ver_mouse dd aScrollbar_ver_mouse -scrollbar_hor_draw dd aScrollbar_hor_draw -scrollbar_hor_mouse dd aScrollbar_hor_mouse -;version_scrollbar dd aVersion_scrollbar - -dinamic_button_draw dd aDbutton_draw -dinamic_button_mouse dd aDbutton_mouse -;version_dbutton dd aVersion_dbutton - -menu_bar_draw dd aMenu_bar_draw -menu_bar_mouse dd aMenu_bar_mouse -menu_bar_activate dd aMenu_bar_activate -;version_menu_bar dd aVersion_menu_bar - -;FileBrowser_draw dd aFileBrowser_draw -;FileBrowser_mouse dd aFileBrowser_mouse -;FileBrowser_key dd aFileBrowser_key -;Version_FileBrowser dd aVersion_FileBrowser - -PathShow_prepare dd sz_PathShow_prepare -PathShow_draw dd sz_PathShow_draw -;Version_path_show dd szVersion_path_show - dd 0,0 - -;a_init db 'lib_init',0 -;a_version db 'version',0 - -;aEdit_box_draw db 'edit_box_draw',0 -;aEdit_box_key db 'edit_box_key',0 -;aEdit_box_mouse db 'edit_box_mouse',0 -;aVersion_ed db 'version_ed',0 - -;aCheck_box_draw db 'check_box_draw',0 -;aCheck_box_mouse db 'check_box_mouse',0 -;aVersion_ch db 'version_ch',0 - -;aOption_box_draw db 'option_box_draw',0 -;aOption_box_mouse db 'option_box_mouse',0 -;aVersion_op db 'version_op',0 - -aScrollbar_ver_draw db 'scrollbar_v_draw',0 -aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 -aScrollbar_hor_draw db 'scrollbar_h_draw',0 -aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 -;aVersion_scrollbar db 'version_scrollbar',0 - -aDbutton_draw db 'dbutton_draw',0 -aDbutton_mouse db 'dbutton_mouse',0 -;aVersion_dbutton db 'version_dbutton',0 - -aMenu_bar_draw db 'menu_bar_draw',0 -aMenu_bar_mouse db 'menu_bar_mouse',0 -aMenu_bar_activate db 'menu_bar_activate',0 -;aVersion_menu_bar db 'version_menu_bar',0 - -;aFileBrowser_draw db 'FileBrowser_draw',0 -;aFileBrowser_mouse db 'FileBrowser_mouse',0 -;aFileBrowser_key db 'FileBrowser_key',0 -;aVersion_FileBrowser db 'version_FileBrowser',0 - -sz_PathShow_prepare db 'PathShow_prepare',0 -sz_PathShow_draw db 'PathShow_draw',0 -;szVersion_path_show db 'version_PathShow',0 - -;--------------------------------------------------------------------- +include '../../import.inc' ;import_box_lib ;--------------------------------------------------------------------- align 4 diff --git a/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.asm b/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.asm index 50942dd7d..d7f9de6e1 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.asm +++ b/programs/develop/libraries/box_lib/asm/trunk/editbox_ex.asm @@ -18,7 +18,7 @@ include '../../../../../load_lib.mac' @use_library ;use load lib macros start: ;universal load library/librarys -sys_load_library library_name, library_path, system_path, myimport +sys_load_library library_name, library_path, system_path, import_box_lib ;if return code =-1 then exit, else nornary work cmp eax,-1 jz exit @@ -116,37 +116,7 @@ library_name db 'box_lib.obj',0 ;library_name db 'box_lib.obj',0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -myimport: - -edit_box_draw dd aEdit_box_draw -edit_box_key dd aEdit_box_key -edit_box_mouse dd aEdit_box_mouse -version_ed dd aVersion_ed - -init_checkbox dd aInit_checkbox -check_box_draw dd aCheck_box_draw -check_box_mouse dd aCheck_box_mouse -version_ch dd aVersion_ch - -option_box_draw dd aOption_box_draw -option_box_mouse dd aOption_box_mouse -version_op dd aVersion_op - - dd 0,0 - -aEdit_box_draw db 'edit_box_draw',0 -aEdit_box_key db 'edit_box_key',0 -aEdit_box_mouse db 'edit_box_mouse',0 -aVersion_ed db 'version_ed',0 - -aInit_checkbox db 'init_checkbox2',0 -aCheck_box_draw db 'check_box_draw2',0 -aCheck_box_mouse db 'check_box_mouse2',0 -aVersion_ch db 'version_ch2',0 - -aOption_box_draw db 'option_box_draw',0 -aOption_box_mouse db 'option_box_mouse',0 -aVersion_op db 'version_op',0 +include '../../import.inc' ;creating a function import table check1 check_box2 (10 shl 16 + 12),(45 shl 16 + 12),5,0x80AABBCC,0,0,check_text1,ch_flag_en diff --git a/programs/develop/libraries/box_lib/asm/trunk/tooltip_demo.asm b/programs/develop/libraries/box_lib/asm/trunk/tooltip_demo.asm index cfaac8dba..6c1350f4f 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/tooltip_demo.asm +++ b/programs/develop/libraries/box_lib/asm/trunk/tooltip_demo.asm @@ -34,14 +34,14 @@ START: ;--------------------------------------------------------------------- ;--- ИНИЦИАЛИЗАЦИЯ ---------------------------------------- ;--------------------------------------------------------------------- -mcall 68, 11 +mcall SF_SYS_MISC, SSF_HEAP_INIT -mcall 40, $C0000027 ; маска событий - мышь только в активном окне +mcall SF_SET_EVENTS_MASK, $C0000027 ; маска событий - мышь только в активном окне -sys_load_library lib_name, lib_path, sys_path, myimport +sys_load_library lib_name, lib_path, sys_path, import_box_lib test eax,eax jz @f - mcall -1 ; alarm exit + mcall SF_TERMINATE_PROCESS @@: @@ -56,16 +56,16 @@ call draw_window ; ;--------------------------------------------------------------------- still: -mcall 23, 5 ; функция 23 - ждать события Не более чем 0.05с +mcall SF_WAIT_EVENT_TIMEOUT, 5 ; ждать события не более чем 0.05с test eax, eax ; нет событий - проверить рисование тултипов по таймеру je yield -cmp eax,1 ; перерисовать окно ? +cmp eax,EV_REDRAW je red ; если да - на метку red -cmp eax,2 ; нажата клавиша ? +cmp eax,EV_KEY je key ; если да - на key -cmp eax,3 ; нажата кнопка ? +cmp eax,EV_BUTTON je button ; если да - на button -cmp eax,6 ; событие мыши +cmp eax,EV_MOUSE je mouse ; если да - на mouse jmp still ; если другое событие - в начало цикла @@ -81,21 +81,21 @@ invoke tooltip_mouse, redbox_tt jmp still ; вернуться к началу цикла key: ; нажата клавиша на клавиатуре -mcall 2 ; функция 2 - считать код символа (в ah) +mcall SF_GET_KEY ; считать код символа (в ah) jmp still ; вернуться к началу цикла ;--------------------------------------------------------------------- button: -mcall 17 ; 17 - получить идентификатор нажатой кнопки +mcall SF_GET_BUTTON ; получить идентификатор нажатой кнопки cmp ah, 1 ; если НЕ нажата кнопка с номером 1, jne still ; вернуться pexit: invoke tooltip_delete, redbox_tt ; освобождаем память -mcall -1 ; иначе конец программы +mcall SF_TERMINATE_PROCESS ;--------------------------------------------------------------------- @@ -104,20 +104,20 @@ mcall -1 ; draw_window: -mcall 12, 1 ; функция 12: сообщить ОС о начале отрисовки +mcall SF_REDRAW, SSF_BEGIN_DRAW -mcall 48, 3, sc,sizeof.system_colors +mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc, sizeof.system_colors mov edx, [sc.work] ; цвет фона or edx, 0x33000000 ; и тип окна 3 -mcall 0, <200,300>, <200,150>, , ,title +mcall SF_CREATE_WINDOW, <200,300>, <200,150>, , ,title ; вывод квадратиков -mcall 13, <60,50>, <50,50>, $FF0000 -mcall 13, <140,50>, <50,50>, $FF +mcall SF_DRAW_RECT, <60,50>, <50,50>, $FF0000 +mcall SF_DRAW_RECT, <140,50>, <50,50>, $FF -mcall 12, 2 ; функция 12.2, закончили рисовать +mcall SF_REDRAW, SSF_END_DRAW ret ; выходим из процедуры @@ -135,22 +135,7 @@ lib_name db 'box_lib.obj',0 cur_dir_path rb 4096 lib_path rb 4096 -myimport: - dd sz_lib_init ;функция запускается макросом 1 раз при подключении -;библиотеки, потому в программе метка на нее не нужна -tooltip_init dd sz_tooltip_init -tooltip_delete dd sz_tooltip_delete -tooltip_test_show dd sz_tooltip_test_show -tooltip_mouse dd sz_tooltip_mouse -get_font_size dd sz_get_font_size - dd 0,0 - -sz_lib_init db 'lib_init',0 -sz_tooltip_init db 'tooltip_init', 0 -sz_tooltip_delete db 'tooltip_delete', 0 -sz_tooltip_test_show db 'tooltip_test_show', 0 -sz_tooltip_mouse db 'tooltip_mouse', 0 -sz_get_font_size db 'get_font_size', 0 +include '../../import.inc' ;import_box_lib ;tooltip txt, next, zone_x, zone_w, zone_y, zone_h, col_txt, col_bkg, tm_wait