forked from KolibriOS/kolibrios
BoxLib: Small reorganization for user-macros.
1) Now all the macros used by other applications to work with BoxLib located in box_lib.mac 2) Macros for components that are used only in the library BoxLib - located in bl_sys.mac, a list of include files. 3) Big requests to other developers -support this rule, it will do easier to use macros for other applications. git-svn-id: svn://kolibrios.org@1432 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
294115f043
commit
79c0315dca
8
programs/develop/libraries/box_lib/trunk/bl_sys.mac
Normal file
8
programs/develop/libraries/box_lib/trunk/bl_sys.mac
Normal file
@ -0,0 +1,8 @@
|
||||
include 'editbox.mac' ;macro which should make life easier :) specially for editbox
|
||||
include 'checkbox.mac' ;macro implements checkbox
|
||||
include 'optionbox.mac' ;macro implements optionbox
|
||||
include 'scrollbar.mac' ;macro implements scrollbar
|
||||
include 'd_button.mac' ;macro implements dinamic_button
|
||||
include 'menubar.mac' ;macro implements menubar
|
||||
include 'filebrowser.mac' ;macro implements filebrowser
|
||||
include 'tree_list.mac' ;macro implements tree_list, image_list, list_box
|
@ -16,6 +16,7 @@ public EXPORTS
|
||||
|
||||
section '.flat' code readable align 16
|
||||
include '../../../../macros.inc'
|
||||
include 'bl_sys.mac'
|
||||
include 'box_lib.mac' ;macro which should make life easier :)
|
||||
|
||||
;----------------------------------------------------
|
||||
|
@ -1,8 +1,218 @@
|
||||
include 'editbox.mac' ;macro which should make life easier :) specially for editbox
|
||||
include 'checkbox.mac' ;macro implements checkbox
|
||||
include 'optionbox.mac' ;macro implements optionbox
|
||||
include 'scrollbar.mac' ;macro implements scrollbar
|
||||
include 'd_button.mac' ;macro implements dinamic_button
|
||||
include 'menubar.mac' ;macro implements menubar
|
||||
include 'filebrowser.mac' ;macro implements filebrowser
|
||||
include 'tree_list.mac' ;macro implements tree_list, image_list, list_box
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Basic macros for use EditBox ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â
|
||||
ed_left equ [edi+4] ;¯®«®¦¥¨¥ ¯® ®á¨ å
|
||||
ed_top equ [edi+8] ;¯®«®¦¥¨¥ ¯® ®á¨ ã
|
||||
ed_color equ [edi+12] ;梥â ä® ª®¬¯®¥â
|
||||
shift_color equ [edi+16] ;=0x6a9480 ¤«ï ¯à¨¬¥à ¢®§ì¥¬ ¦¥«¥ë© 梥⠡®ªá
|
||||
ed_focus_border_color equ [edi+20] ;梥â à ¬ª¨ ª®¬¯®¥â
|
||||
ed_blur_border_color equ [edi+24] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â
|
||||
ed_text_color equ [edi+28] ;梥â ⥪áâ
|
||||
ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥áâ¨
|
||||
ed_text equ [edi+36] ;㪠§ â¥«ì ¡ãä¥à
|
||||
ed_mouse_variable equ [edi+40] ; 㪠§ â¥«ì ¯¥à¥¬¥ãî ¤«ï ¡®ªá /£à㯯ë
|
||||
ed_flags equ [edi+44] ;ä« £¨
|
||||
bp_flags equ [ebp+44] ;¢ ¥ª®â®àëå ¯à®æ¥¤ãà å edi ¨á¯®«ì§ã¥âáï, ¢§ ¬¥ 㪠§ ⥫ì åà ¨âìáï ¢ ebp
|
||||
ed_size equ [edi+48] ;ª®«-¢® ᨬ¢®«®¢
|
||||
bp_size equ [ebp+48] ;ª®«-¢® ᨬ¢¯®«®¢, ¤«ï ¤à¥á 樨 ¨á¯«ì§ã¥âáï ebp¡ edi § ïâ
|
||||
ed_pos equ [edi+52] ;¯®§¨æ¨ï ªãàá®à
|
||||
ed_offset equ [edi+56] ;ᬥ饨¥
|
||||
cl_curs_x equ [edi+60] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å
|
||||
cl_curs_y equ [edi+64] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã
|
||||
ed_shift_pos equ [edi+68] ;¯®«®¦¥¨¥ ªãàá®à
|
||||
ed_shift_pos_old equ [edi+72] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à
|
||||
|
||||
ed_struc_size=76
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Bit mask from editbox
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë
|
||||
ed_always_focus= 100000000000000b
|
||||
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï
|
||||
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
|
||||
ed_shift_on_off=1111111111110111b
|
||||
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î
|
||||
ed_shift_off= 1111111111111011b
|
||||
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥
|
||||
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï
|
||||
ed_shift_cl= 1111111111100011b
|
||||
ed_shift_mcl= 1111111111111011b
|
||||
ed_left_fl= 100000b
|
||||
ed_right_fl= 1111111111011111b
|
||||
ed_offset_fl= 1000000b
|
||||
ed_offset_cl= 1111111110111111b
|
||||
ed_insert= 10000000b
|
||||
ed_insert_cl= 1111111101111111b
|
||||
ed_mouse_on = 100000000b
|
||||
ed_mous_adn_b= 100011000b
|
||||
ed_mouse_on_off=1111111011111111b
|
||||
ed_height=14 ; ¢ëá®â
|
||||
|
||||
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
|
||||
{
|
||||
.width dd width
|
||||
.left dd left
|
||||
.top dd top
|
||||
.color dd color
|
||||
.shift_color dd shift_color
|
||||
.focus_border_color dd focus_border_color
|
||||
.blur_border_color dd blur_border_color
|
||||
.text_color dd text_color
|
||||
.max dd max
|
||||
.text dd text
|
||||
.mouse_variable dd mouse_variable
|
||||
.flags dd flags+0
|
||||
.size dd size+0
|
||||
.pos dd pos+0
|
||||
.offset dd 0
|
||||
.cl_curs_x dd 0
|
||||
.cl_curs_y dd 0
|
||||
.shift dd 0
|
||||
.shift_old dd 0
|
||||
}
|
||||
|
||||
macro edit_boxes_set_sys_color start,end,color_table
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ed_struc_size)
|
||||
mov esi,color_table
|
||||
@@:
|
||||
mov eax,dword [esi+36]
|
||||
mov ebx,dword [esi+20]
|
||||
push dword eax
|
||||
pop dword ed_focus_border_color
|
||||
shr bh,1
|
||||
shr bl,1
|
||||
shr ah,1
|
||||
shr al,1
|
||||
add ah,bh
|
||||
add al,bl
|
||||
ror eax,16
|
||||
ror ebx,16
|
||||
shr bl,1
|
||||
shr al,1
|
||||
add al,bl
|
||||
ror eax,16
|
||||
mov dword ed_blur_border_color,eax
|
||||
mov dword shift_color,eax
|
||||
add edi,ed_struc_size
|
||||
loop @b
|
||||
}
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Basic macros for use CheckBox ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ch_struc_size=36
|
||||
ch_flag_en=10b ;í«¥¬¥â ¢ë¡à
|
||||
|
||||
ch_left equ [edi] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® å
|
||||
ch_top equ [edi+2] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã
|
||||
ch_text_margin equ [edi+4] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
ch_size equ [edi+8] ;12 à §¬¥à ª¢ ¤à â 祪 ¡®ªá
|
||||
ch_color equ [edi+12] ;梥⠢ãâਠcheckbox
|
||||
ch_border_color equ [edi+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ï⥫ì®
|
||||
ch_text_color equ [edi+20] ;[edi+4] ;梥â ⥪áâ
|
||||
ch_text_ptr equ [edi+24] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨
|
||||
ch_text_length equ [edi+28]
|
||||
ch_flags equ [edi+32] ;ä« £¨
|
||||
|
||||
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
|
||||
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá
|
||||
.left: dw left ;+0 ¯®«®¦¥¨¥ ¯® å
|
||||
.top: dw top ;+2 ¯®«®¦¥¨¥ ¯® ã
|
||||
.ch_text_margin: dd ch_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
.ch_size: dd ch_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12
|
||||
.color: dd color ;梥⠢ãâਠ祪¡®ªá
|
||||
.border_color: dd border_color ;梥â à ¬ª¨
|
||||
.text_color: dd text_color ;梥⠤¯¨á¨
|
||||
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ
|
||||
.ch_text_length: dd ch_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨
|
||||
.flags: dd flags+0 ; ä« £¨
|
||||
}
|
||||
|
||||
macro check_boxes_set_sys_color start,end,color_table
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ch_struc_size)
|
||||
mov esi,color_table
|
||||
@@:
|
||||
; push dword [esi+20] ;梥â à ¡®ç¥© ®¡« á⨠®ª
|
||||
; pop dword ch_color
|
||||
push dword [esi+32] ;梥â ⥪áâ ¢ à ¡®ç¥© ®¡« á⨠®ª
|
||||
pop dword ch_text_color
|
||||
push dword [esi+36] ;梥⠣à 䨪¨ ¢ ®ª¥ (à §¤¥«¨â¥«ìë¥ «¨¨¨ ¨ â.¯.)
|
||||
pop dword ch_border_color
|
||||
add edi,ch_struc_size
|
||||
loop @b
|
||||
}
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Basic macros for use OptionBox ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
|
||||
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá
|
||||
op_flag_en=10b
|
||||
.option_group: dd point_gr
|
||||
.left: dw left ;+0 ;¯®«®¦¥¨¥ ¯® å
|
||||
.top: dw top ;¯®«®¦¥¨¥ ¯® ã
|
||||
.ch_text_margin: dd op_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
.ch_size: dd op_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12
|
||||
.color: dd color ;梥⠢ãâਠ祪¡®ªá
|
||||
.border_color: dd border_color ;梥â à ¬ª¨
|
||||
.text_color: dd text_color ;梥⠤¯¨á¨
|
||||
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ
|
||||
.ch_text_length: dd op_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨
|
||||
.flags: dd flags+0 ; ä« £¨
|
||||
}
|
||||
|
||||
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
|
||||
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
|
||||
info_capt_len,el_focus, p_scrol,on_press {
|
||||
.data_info dd 0
|
||||
.info_size dw info_size
|
||||
.info_max_count dd info_max_count
|
||||
.style dd style
|
||||
.data_nodes dd 0
|
||||
.data_img dd 0
|
||||
.img_cx dw img_cx
|
||||
.img_cy dw img_cy
|
||||
.data_img_sys dd 0
|
||||
.ch_tim dd 0
|
||||
.ls_tim dd 0
|
||||
.tim_undo dd 0
|
||||
.cur_pos dd 0
|
||||
.col_bkg dd col_bkg
|
||||
.col_zag dd col_zag
|
||||
.col_txt dd col_txt
|
||||
.box_left dd box_l
|
||||
.box_top dd box_t
|
||||
.box_width dd box_w
|
||||
.box_height dd box_h
|
||||
.capt_cy dw capt_cy
|
||||
.info_capt_offs dw info_capt_offs
|
||||
.info_capt_len dw info_capt_len
|
||||
.el_focus dd el_focus
|
||||
.p_scrol dd p_scrol
|
||||
rb 4
|
||||
.on_activate dd 0
|
||||
.on_press dd on_press
|
||||
}
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Basic macros for use TreeList ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;ª®áâ âë á⨫ï
|
||||
tl_key_no_edit equ 1b ;í«¥¬¥â ¥«ì§ï । ªâ¨à®¢ âì ª« ¢¨ âãॠ(¨§¬¥ïâì ã஢¨, 㤠«ïâì)
|
||||
tl_draw_par_line equ 10b ;à¨á®¢ âì «¨¨¨ ª த¨â¥«ì᪮¬ã 㧫ã
|
||||
tl_list_box_mode equ 100b ;áâ¨«ì ¥ ®â®¡à ¦ ¥â ã஢¨ (ª ª ¢ ListBox ¢á¥ ®¤®£® ã஢ï)
|
||||
|
||||
;ª®áâ âë ¤«ï äãªæ¨©
|
||||
tl_err_save_memory_size equ 10b ;¥ å¢ â ¥â ¯ ¬ï⨠¤«ï á®åà ¥¨ï í«¥¬¥â
|
||||
tl_err_load_caption equ 1b ;¢ ¯ ¬ï⨠¥â § £®«®¢ª 'tree'
|
||||
tl_err_load_info_size equ 100b ;¥ ᮢ¯ ¤ ¥â à §¬¥à ¨ä®à¬ 樮®© áâàãªâãàë ¯à¨ ®âªàë⨨
|
||||
tl_load_mode_add equ 0x20000 ;®¯æ¨ï áç¨âë¢ ¨ï ¢ ०¨¬¥ ¤®¡ ¢«¥¨ï ¨ä®à¬ 樨
|
||||
tl_save_load_heder_size equ 26 ;à §¬¥à § £®«®¢ª ¤«ï § ¯¨á¨/ç⥨ï í«¥¬¥â®¢
|
||||
|
@ -5,45 +5,16 @@
|
||||
ch_struc_size=36
|
||||
ch_flag_en=10b ;ýëåìåíò âûáðàí
|
||||
|
||||
ch_left equ [edi] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® å
|
||||
ch_top equ [edi+2] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã
|
||||
ch_text_margin equ [edi+4] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
ch_size equ [edi+8] ;12 à §¬¥à ª¢ ¤à â 祪 ¡®ªá
|
||||
ch_color equ [edi+12] ;梥⠢ãâਠcheckbox
|
||||
ch_border_color equ [edi+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ï⥫ì®
|
||||
ch_text_color equ [edi+20] ;[edi+4] ;梥â ⥪áâ
|
||||
ch_text_ptr equ [edi+24] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨
|
||||
ch_left equ [edi] ;координата начала рисования по х
|
||||
ch_top equ [edi+2] ;координата начала рисования по у
|
||||
ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи
|
||||
ch_size equ [edi+8] ;12 размер квадрата чек бокса
|
||||
ch_color equ [edi+12] ;цвет внутри checkbox
|
||||
ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
|
||||
ch_text_color equ [edi+20] ;[edi+4] ;цвет текста
|
||||
ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки
|
||||
ch_text_length equ [edi+28]
|
||||
ch_flags equ [edi+32] ;ä« £¨
|
||||
|
||||
macro check_boxes_set_sys_color start,end,color_table
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ch_struc_size)
|
||||
mov esi,color_table
|
||||
@@:
|
||||
; push dword [esi+20] ;梥â à ¡®ç¥© ®¡« á⨠®ª
|
||||
; pop dword ch_color
|
||||
push dword [esi+32] ;梥â ⥪áâ ¢ à ¡®ç¥© ®¡« á⨠®ª
|
||||
pop dword ch_text_color
|
||||
push dword [esi+36] ;梥⠣à 䨪¨ ¢ ®ª¥ (à §¤¥«¨â¥«ìë¥ «¨¨¨ ¨ â.¯.)
|
||||
pop dword ch_border_color
|
||||
add edi,ch_struc_size
|
||||
loop @b
|
||||
}
|
||||
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags
|
||||
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá
|
||||
.left: dw left ;+0 ¯®«®¦¥¨¥ ¯® å
|
||||
.top: dw top ;+2 ¯®«®¦¥¨¥ ¯® ã
|
||||
.ch_text_margin: dd ch_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
.ch_size: dd ch_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12
|
||||
.color: dd color ;梥⠢ãâਠ祪¡®ªá
|
||||
.border_color: dd border_color ;梥â à ¬ª¨
|
||||
.text_color: dd text_color ;梥⠤¯¨á¨
|
||||
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ
|
||||
.ch_text_length: dd ch_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨
|
||||
.flags: dd flags+0 ; ä« £¨
|
||||
}
|
||||
ch_flags equ [edi+32] ;флаги
|
||||
|
||||
macro use_checkbox_draw
|
||||
{
|
||||
|
@ -1,5 +1,3 @@
|
||||
ed_struc_size=76
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Basic macros for use editbox ;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@ -25,82 +23,6 @@ cl_curs_y equ [edi+64] ;
|
||||
ed_shift_pos equ [edi+68] ;¯®«®¦¥¨¥ ªãàá®à
|
||||
ed_shift_pos_old equ [edi+72] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Bit mask from editbox
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë
|
||||
ed_always_focus= 100000000000000b
|
||||
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï
|
||||
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift
|
||||
ed_shift_on_off=1111111111110111b
|
||||
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î
|
||||
ed_shift_off= 1111111111111011b
|
||||
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥
|
||||
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï
|
||||
ed_shift_cl= 1111111111100011b
|
||||
ed_shift_mcl= 1111111111111011b
|
||||
ed_left_fl= 100000b
|
||||
ed_right_fl= 1111111111011111b
|
||||
ed_offset_fl= 1000000b
|
||||
ed_offset_cl= 1111111110111111b
|
||||
ed_insert= 10000000b
|
||||
ed_insert_cl= 1111111101111111b
|
||||
ed_mouse_on = 100000000b
|
||||
ed_mous_adn_b= 100011000b
|
||||
ed_mouse_on_off=1111111011111111b
|
||||
ed_height=14 ; ¢ëá®â
|
||||
|
||||
struc edit_box width,left,top,color,shift_color,focus_border_color,\
|
||||
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
|
||||
{
|
||||
.width dd width
|
||||
.left dd left
|
||||
.top dd top
|
||||
.color dd color
|
||||
.shift_color dd shift_color
|
||||
.focus_border_color dd focus_border_color
|
||||
.blur_border_color dd blur_border_color
|
||||
.text_color dd text_color
|
||||
.max dd max
|
||||
.text dd text
|
||||
.mouse_variable dd mouse_variable
|
||||
.flags dd flags+0
|
||||
.size dd size+0
|
||||
.pos dd pos+0
|
||||
.offset dd 0
|
||||
.cl_curs_x dd 0
|
||||
.cl_curs_y dd 0
|
||||
.shift dd 0
|
||||
.shift_old dd 0
|
||||
}
|
||||
macro edit_boxes_set_sys_color start,end,color_table
|
||||
{
|
||||
mov edi,start
|
||||
mov ecx,((end-start)/ed_struc_size)
|
||||
mov esi,color_table
|
||||
@@:
|
||||
mov eax,dword [esi+36]
|
||||
mov ebx,dword [esi+20]
|
||||
push dword eax
|
||||
pop dword ed_focus_border_color
|
||||
shr bh,1
|
||||
shr bl,1
|
||||
shr ah,1
|
||||
shr al,1
|
||||
add ah,bh
|
||||
add al,bl
|
||||
ror eax,16
|
||||
ror ebx,16
|
||||
shr bl,1
|
||||
shr al,1
|
||||
add al,bl
|
||||
ror eax,16
|
||||
mov dword ed_blur_border_color,eax
|
||||
mov dword shift_color,eax
|
||||
add edi,ed_struc_size
|
||||
loop @b
|
||||
}
|
||||
|
||||
macro init_editbox
|
||||
{
|
||||
pushad
|
||||
|
@ -1,24 +1,8 @@
|
||||
;файл создан 13.02.2009 <Lrz> На код применена GPL2 лицензия
|
||||
;Макрос для системной библиотеки box_lib.obj
|
||||
;ä ©« ᮧ¤ 13.02.2009 <Lrz> <20> ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï
|
||||
;Œ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj
|
||||
;Optionbox
|
||||
|
||||
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags
|
||||
{ ;бвагЄвга Ї а ¬Ґва®ў ¤«п 祪 Ў®Єб
|
||||
op_flag_en=10b
|
||||
.option_group: dd point_gr
|
||||
.left: dw left ;+0 ;Ї®«®¦ҐЁҐ Ї® е
|
||||
.top: dw top ;Ї®«®¦ҐЁҐ Ї® г
|
||||
.ch_text_margin: dd op_text_margin ;а ббв®пЁҐ ®в Їаאַ㣮«мЁЄ 祪 Ў®Єб ¤® ¤ЇЁбЁ
|
||||
.ch_size: dd op_size ;а §¬Ґа Єў ¤а в 祪 Ў®Єб , ¤«п ЇаЁ¬Ґа 12
|
||||
.color: dd color ;梥⠢гвਠ祪Ў®Єб
|
||||
.border_color: dd border_color ;梥в а ¬ЄЁ
|
||||
.text_color: dd text_color ;梥⠤ЇЁбЁ
|
||||
.text: dd text ; ¤аҐб ў Є®¤Ґ Їа®Ја ¬¬л Ј¤Ґ а бЇ®«®¦Ґ ⥪бв
|
||||
.ch_text_length: dd op_text_length ;¤«Ё бва®ЄЁ б бЁ¬ў®« ¬Ё
|
||||
.flags: dd flags+0 ; д« ЈЁ
|
||||
}
|
||||
|
||||
macro use_optionbox_driver ;макросы которые управляют работой бокса )
|
||||
macro use_optionbox_driver ;¬ ªà®áë ª®â®àë¥ ã¯à ¢«ïîâ à ¡®â®© ¡®ªá )
|
||||
{
|
||||
option_box_draw:
|
||||
pusha
|
||||
@ -58,7 +42,7 @@ option_check:
|
||||
|
||||
@@: popa
|
||||
ret 4
|
||||
; exit вообще :)
|
||||
; exit ¢®®¡é¥ :)
|
||||
|
||||
|
||||
option_box_mouse:
|
||||
@ -82,18 +66,18 @@ macro use_optionbox_draw
|
||||
{
|
||||
option_box_draw_box:
|
||||
option_group equ [edi]
|
||||
op_left equ [edi+4] ;координата начала рисования по х
|
||||
op_top equ [edi+6] ;координата начала рисования по у
|
||||
op_text_margin equ [edi+8] ;=4 расстояние от прямоугольника чек бокса до надписи
|
||||
op_size equ [edi+12] ;12 размер квадрата чек бокса
|
||||
op_left equ [edi+4] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® å
|
||||
op_top equ [edi+6] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã
|
||||
op_text_margin equ [edi+8] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
op_size equ [edi+12] ;12 à §¬¥à ª¢ ¤à â 祪 ¡®ªá
|
||||
op_color equ [edi+16]
|
||||
op_border_color equ [edi+20] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно
|
||||
op_text_color equ [edi+24];[edi+4] ;цвет текста
|
||||
op_text_ptr equ [edi+28] ;указатель на начало текстовой строки
|
||||
op_border_color equ [edi+20] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ï⥫ì®
|
||||
op_text_color equ [edi+24];[edi+4] ;梥â ⥪áâ
|
||||
op_text_ptr equ [edi+28] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨
|
||||
op_text_length equ [edi+32]
|
||||
op_flags equ [edi+36] ;флаги
|
||||
op_flags equ [edi+36] ;ä« £¨
|
||||
|
||||
pusha ;сохраним все регистры
|
||||
pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë
|
||||
|
||||
movzx ebx,word op_left
|
||||
shl ebx,16
|
||||
@ -103,49 +87,49 @@ op_flags equ [edi+36] ;
|
||||
add ecx,dword op_size
|
||||
mov edx,dword op_border_color
|
||||
mov eax,13
|
||||
mcall ;рисуем рамку
|
||||
mcall ;à¨á㥬 à ¬ªã
|
||||
|
||||
mov edx,dword op_color
|
||||
add ebx,1 shl 16 - 2
|
||||
add ecx,1 shl 16 - 2
|
||||
mcall ;закрашиваем внутренности чекбокса
|
||||
mcall ;§ ªà 訢 ¥¬ ¢ãâ८á⨠祪¡®ªá
|
||||
|
||||
; mov eax,dword option_group
|
||||
; mov dword eax,[eax]
|
||||
; cmp eax,edi
|
||||
; jne @f
|
||||
; call option_box_draw_op ;нарисовать включенный чек бокс
|
||||
; call option_box_draw_op ; à¨á®¢ âì ¢ª«îç¥ë© 祪 ¡®ªá
|
||||
|
||||
|
||||
;----------------------------
|
||||
;расчет куда будет произведен вывод текста
|
||||
;à áç¥â ªã¤ ¡ã¤¥â ¯à®¨§¢¥¤¥ ¢ë¢®¤ ⥪áâ
|
||||
;----------------------------
|
||||
@@: movzx ebx,word op_left ;загрузить значение х для чек бокса
|
||||
@@: movzx ebx,word op_left ;§ £à㧨âì § 票¥ å ¤«ï 祪 ¡®ªá
|
||||
add ebx,dword op_size
|
||||
add ebx,dword op_text_margin;добавить размер стороны и расстояние на котором начнется вывод текста
|
||||
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
|
||||
mov bx,word op_top ;загрузим значение по y
|
||||
add ebx,dword op_text_margin;¤®¡ ¢¨âì à §¬¥à áâ®à®ë ¨ à ááâ®ï¨¥ ª®â®à®¬ ç¥âáï ¢ë¢®¤ ⥪áâ
|
||||
shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536)
|
||||
mov bx,word op_top ;§ £à㧨¬ § 票¥ ¯® y
|
||||
add ebx,op_size
|
||||
mov ecx,dword op_text_color ;загрузим цвет надписи + flags
|
||||
sub ebx,7 ;добавим значение длины стороны -9+2
|
||||
mov ecx,dword op_text_color ;§ £à㧨¬ 梥⠤¯¨á¨ + flags
|
||||
sub ebx,7 ;¤®¡ ¢¨¬ § 票¥ ¤«¨ë áâ®à®ë -9+2
|
||||
|
||||
mov edx,dword op_text_ptr ;укажем адрес от куда нужно выводить строку
|
||||
mov edx,dword op_text_ptr ;㪠¦¥¬ ¤à¥á ®â ªã¤ 㦮 ¢ë¢®¤¨âì áâபã
|
||||
mov esi,dword op_text_length
|
||||
;внесем в eax значение вывода надписи на канву
|
||||
;¢¥á¥¬ ¢ eax § 票¥ ¢ë¢®¤ ¤¯¨á¨ ª ¢ã
|
||||
mov eax,4
|
||||
mcall ;Вывод
|
||||
popa ;восстановить значения регистров из стека
|
||||
ret ;выйдем из процедуры
|
||||
mcall ;‚뢮¤
|
||||
popa ;¢®ááâ ®¢¨âì § 票ï ॣ¨áâ஢ ¨§ á⥪
|
||||
ret ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
|
||||
|
||||
option_box_clear_op: ;очистка чек бокса
|
||||
mov edx,dword op_color ;цвет внутри чек бокса
|
||||
jmp @f ;безусловный прыжок на нижнюю метку @@
|
||||
option_box_clear_op: ;®ç¨á⪠祪 ¡®ªá
|
||||
mov edx,dword op_color ;梥⠢ãâਠ祪 ¡®ªá
|
||||
jmp @f ;¡¥§ãá«®¢ë© ¯à릮ª ¨¦îî ¬¥âªã @@
|
||||
|
||||
|
||||
option_box_draw_op: ;нарисовать включенный чек бокс
|
||||
mov edx,dword op_border_color ;загрузить цвет
|
||||
option_box_draw_op: ; à¨á®¢ âì ¢ª«îç¥ë© 祪 ¡®ªá
|
||||
mov edx,dword op_border_color ;§ £à㧨âì 梥â
|
||||
@@:
|
||||
movzx ebx,word op_left ;загрузить координату по х
|
||||
movzx ebx,word op_left ;§ £à㧨âì ª®®à¤¨ âã ¯® å
|
||||
mov eax,dword op_size
|
||||
mov bp,ax
|
||||
shr eax,2
|
||||
@ -153,62 +137,62 @@ option_box_draw_op: ;
|
||||
|
||||
push ax
|
||||
add ebx,eax
|
||||
shl ebx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
|
||||
shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536)
|
||||
pop ax
|
||||
lea eax,[eax*2]
|
||||
sub bp,ax ;сохраним регистр bx в регистре указателя базы
|
||||
sub bp,ax ;á®åà ¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
|
||||
mov bx,bp
|
||||
|
||||
movzx ecx,word op_top ;загрузить координату по у
|
||||
movzx ecx,word op_top ;§ £à㧨âì ª®®à¤¨ âã ¯® ã
|
||||
pop ax
|
||||
add cx,ax
|
||||
shl ecx,16 ;сдвинем на 16 разрядов в лево (умножим на 65536)
|
||||
mov cx,bp ;загрузим значения регистра указателя базы в cx
|
||||
mov eax,13 ;в eax - значения функции для вывода полосы т.е. по сути прямоугольника, который отображает включенный компонент чек бокс
|
||||
mcall ;вывод
|
||||
ret ;выйти из процедуры
|
||||
shl ecx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536)
|
||||
mov cx,bp ;§ £à㧨¬ § 票ï ॣ¨áâà 㪠§ â¥«ï ¡ §ë ¢ cx
|
||||
mov eax,13 ;¢ eax - § 票ï äãªæ¨¨ ¤«ï ¢ë¢®¤ ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«îç¥ë© ª®¬¯®¥â 祪 ¡®ªá
|
||||
mcall ;¢ë¢®¤
|
||||
ret ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
|
||||
}
|
||||
|
||||
|
||||
macro use_optionbox_mouse
|
||||
{
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Обработчик mouse
|
||||
;Ž¡à ¡®â稪 mouse
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
option_box_mouse_op: ;обработка мыши
|
||||
option_box_mouse_op: ;®¡à ¡®âª ¬ëè¨
|
||||
pusha
|
||||
mov esi,dword op_text_length ;загрузить кол-во символов в текстовой строке
|
||||
;Умножение на 6 Быстрое умножение можно воспользоваться любым мз методов, но на старых Процессорах (386,486,P1)быстрее будет с инструкцией Lea
|
||||
mov esi,dword op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
|
||||
;“¬®¦¥¨¥ 6 <20>ëáâ஥ 㬮¦¥¨¥ ¬®¦® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ® áâ àëå <20>à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨áâàãªæ¨¥© Lea
|
||||
; lea esi,[eax*2+eax]
|
||||
; shl eax,1
|
||||
imul esi,6 ; или можно и так умножить на 6
|
||||
imul esi,6 ; ¨«¨ ¬®¦® ¨ â ª 㬮¦¨âì 6
|
||||
xor ebx,ebx
|
||||
add esi,dword op_text_margin ;добавить 3 - расстояние от чек бокса до надписи
|
||||
add esi,dword op_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï¨¥ ®â 祪 ¡®ªá ¤® ¤¯¨á¨
|
||||
|
||||
mov eax,37 ;получим координаты мышки
|
||||
inc ebx ;добавить 1
|
||||
mcall ;получить координаты курсора относительно окна
|
||||
mov eax,37 ;¯®«ã稬 ª®®à¤¨ âë ¬ë誨
|
||||
inc ebx ;¤®¡ ¢¨âì 1
|
||||
mcall ;¯®«ãç¨âì ª®®à¤¨ âë ªãàá®à ®â®á¨â¥«ì® ®ª
|
||||
|
||||
movzx ebx,word op_top ;загрузить в bx значение координаты у
|
||||
cmp ax,bx ;сравнить с с координатой курсора
|
||||
jl option_box_mouse_end ;SF <> OF если меньше
|
||||
add ebx,dword op_size ;добавить размер
|
||||
cmp ax,bx ;сравнить
|
||||
jg option_box_mouse_end ;ZF = 0 и SF = OF если больше
|
||||
movzx ebx,word op_top ;§ £à㧨âì ¢ bx § 票¥ ª®®à¤¨ âë ã
|
||||
cmp ax,bx ;áà ¢¨âì á á ª®®à¤¨ ⮩ ªãàá®à
|
||||
jl option_box_mouse_end ;SF <> OF ¥á«¨ ¬¥ìè¥
|
||||
add ebx,dword op_size ;¤®¡ ¢¨âì à §¬¥à
|
||||
cmp ax,bx ;áà ¢¨âì
|
||||
jg option_box_mouse_end ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥
|
||||
|
||||
shr eax,16 ;разделим на 65536 или просто сдвинем биты на 16 значений
|
||||
movzx ebx,word op_left ;произведем аналогичное сравнение
|
||||
cmp ax,bx ;сравнить регистры
|
||||
jl option_box_mouse_end ;если меньше
|
||||
add ebx,dword op_size ;добавить длину стороны прямоугольника
|
||||
add ebx,esi ;Учесть в значении по х еще и длину надписи к чекбоксу
|
||||
cmp ax,bx ;стравнить регистры
|
||||
jg option_box_mouse_end ;если больше
|
||||
shr eax,16 ;à §¤¥«¨¬ 65536 ¨«¨ ¯à®á⮠ᤢ¨¥¬ ¡¨âë 16 § 票©
|
||||
movzx ebx,word op_left ;¯à®¨§¢¥¤¥¬ «®£¨ç®¥ áà ¢¥¨¥
|
||||
cmp ax,bx ;áà ¢¨âì ॣ¨áâàë
|
||||
jl option_box_mouse_end ;¥á«¨ ¬¥ìè¥
|
||||
add ebx,dword op_size ;¤®¡ ¢¨âì ¤«¨ã áâ®à®ë ¯àאַ㣮«ì¨ª
|
||||
add ebx,esi ;“ç¥áâì ¢ § 票¨ ¯® å ¥é¥ ¨ ¤«¨ã ¤¯¨á¨ ª 祪¡®ªáã
|
||||
cmp ax,bx ;áâà ¢¨âì ॣ¨áâàë
|
||||
jg option_box_mouse_end ;¥á«¨ ¡®«ìè¥
|
||||
mov eax,dword option_group
|
||||
mov [eax],edi
|
||||
|
||||
option_box_mouse_end:
|
||||
popa ;восстановить регистры из стека
|
||||
ret ;выйти
|
||||
popa ;¢®ááâ ®¢¨âì ॣ¨áâàë ¨§ á⥪
|
||||
ret ;¢ë©â¨
|
||||
|
||||
}
|
@ -56,39 +56,6 @@ tl_save_load_heder_size equ 26 ;
|
||||
;ls_tim dd ? ;+34 время последнего сохранения
|
||||
;on_activate dd ? ;+92 указатель на функцию при активировании узла
|
||||
|
||||
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
|
||||
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
|
||||
info_capt_len,el_focus, p_scrol,on_press {
|
||||
.data_info dd 0
|
||||
.info_size dw info_size
|
||||
.info_max_count dd info_max_count
|
||||
.style dd style
|
||||
.data_nodes dd 0
|
||||
.data_img dd 0
|
||||
.img_cx dw img_cx
|
||||
.img_cy dw img_cy
|
||||
.data_img_sys dd 0
|
||||
.ch_tim dd 0
|
||||
.ls_tim dd 0
|
||||
.tim_undo dd 0
|
||||
.cur_pos dd 0
|
||||
.col_bkg dd col_bkg
|
||||
.col_zag dd col_zag
|
||||
.col_txt dd col_txt
|
||||
.box_left dd box_l
|
||||
.box_top dd box_t
|
||||
.box_width dd box_w
|
||||
.box_height dd box_h
|
||||
.capt_cy dw capt_cy
|
||||
.info_capt_offs dw info_capt_offs
|
||||
.info_capt_len dw info_capt_len
|
||||
.el_focus dd el_focus
|
||||
.p_scrol dd p_scrol
|
||||
rb 4
|
||||
.on_activate dd 0
|
||||
.on_press dd on_press
|
||||
}
|
||||
|
||||
macro use_tree_list
|
||||
{
|
||||
;-----------------------------------------------------------------------------
|
||||
|
@ -18,9 +18,7 @@ include 'mem.inc'
|
||||
include 'dll.inc'
|
||||
|
||||
include '../../develop/libraries/box_lib/load_lib.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/tree_list.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/editbox.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/checkbox.mac'
|
||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
|
||||
min_window_w equ 485 ;¬¨¨¬ «ì ï è¨à¨ ®ª
|
||||
min_window_h equ 325 ;¬¨¨¬ «ì ï ¢ëá®â ®ª
|
||||
|
Loading…
Reference in New Issue
Block a user