/programs/develop/libraries/box_lib/branch/checkbox.mac |
---|
File deleted |
\ No newline at end of file |
/programs/develop/libraries/box_lib/branch/bl_sys.mac |
---|
1,5 → 1,5 |
;include 'editbox.mac' ;macro which should make life easier :) specially for editbox |
include 'checkbox.mac' ;macro implements checkbox |
include 'checkbox2.mac' ;macro implements checkbox |
;include 'optionbox.mac' ;macro implements optionbox |
;include 'scrollbar.mac' ;macro implements scrollbar |
;include 'd_button.mac' ;macro implements dinamic_button |
/programs/develop/libraries/box_lib/branch/box_lib.asm |
---|
43,11 → 43,11 |
;CheckBox |
;---------------------------------------------------- |
align 16 |
_init_checkbox ;macro for init checkbox |
_init_checkbox2 ;macro for init checkbox |
align 16 |
use_checkbox_draw ;macro reveals the function of the display. |
use_checkbox_draw2 ;macro reveals the function of the display. |
align 16 |
use_checkbox_mouse ;macro reveals processing function of the mouse. |
use_checkbox_mouse2 ;macro reveals processing function of the mouse. |
;-------------------------------------------------- |
133,10 → 133,10 |
;dd sz_edit_box_set_text, edit_box_set_text |
;dd szVersion_ed, 0x00000001 |
dd sz_init_checkbox, init_checkbox |
dd sz_check_box_draw, check_box_draw |
dd sz_check_box_mouse, check_box_mouse |
dd szVersion_ch, 0x00000002 |
dd sz_init_checkbox2, init_checkbox2 |
dd sz_check_box_draw2, check_box_draw2 |
dd sz_check_box_mouse2, check_box_mouse2 |
dd szVersion_ch2, 0x00000002 |
;dd sz_option_box_draw, option_box_draw |
;dd sz_option_box_mouse, option_box_mouse |
232,10 → 232,10 |
sz_edit_box_set_text db 'edit_box_set_text',0 |
szVersion_ed db 'version_ed',0 |
sz_init_checkbox db 'init_checkbox',0 |
sz_check_box_draw db 'check_box_draw',0 |
sz_check_box_mouse db 'check_box_mouse',0 |
szVersion_ch db 'version_ch',0 |
sz_init_checkbox2 db 'init_checkbox2',0 |
sz_check_box_draw2 db 'check_box_draw2',0 |
sz_check_box_mouse2 db 'check_box_mouse2',0 |
szVersion_ch2 db 'version_ch2',0 |
sz_option_box_draw db 'option_box_draw',0 |
sz_option_box_mouse db 'option_box_mouse',0 |
/programs/develop/libraries/box_lib/branch/box_lib.mac |
---|
111,17 → 111,17 |
ch_flag_middle=100b ;ôëàã ðàñïîëîæåíèÿ òåêñòà â öåíòðå ò.å. 4-é áèò. |
ch_flag_bottom=1000b ;ôëàã ðàñïîëîæåíèÿ òåêñòà â íèçó ò.å. ïî óìîë÷àíèþ ïðèíèìàåòñÿ çíà÷åíèå âíèçó ò.å. îòñóñòâèå 3-ãî è 4-ãî áèòà |
ch_left_s equ [ebp] ;êîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
ch_top_s equ [ebp+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
ch_text_margin equ [ebp+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
ch_color equ [ebp+12] ;öâåò âíóòðè checkbox |
ch_border_color equ [ebp+16] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
ch_text_color equ [ebp+20] ;[edi+4] ;öâåò òåêñòà |
ch_text_ptr equ [ebp+24] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
ch_flags equ [ebp+28] ;ôëàãè |
ch_sz_str equ [ebp+32] ;äëèííà ñòðîêè, âû÷èñëÿåòñÿ ïðè èíèöèàëèçàöèè êîìïîíåíòà |
2ch_left_s equ [ebp] ;êîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
2ch_top_s equ [ebp+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
2ch_text_margin equ [ebp+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
2ch_color equ [ebp+12] ;öâåò âíóòðè checkbox |
2ch_border_color equ [ebp+16] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
2ch_text_color equ [ebp+20] ;[edi+4] ;öâåò òåêñòà |
2ch_text_ptr equ [ebp+24] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
2ch_flags equ [ebp+28] ;ôëàãè |
2ch_sz_str equ [ebp+32] ;äëèííà ñòðîêè, âû÷èñëÿåòñÿ ïðè èíèöèàëèçàöèè êîìïîíåíòà |
struc check_box left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags |
struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags |
{ ;ñòðóêòóðà ïàðàìåòðîâ äëÿ ÷åê áîêñà |
.left_s: dd left_s ;+0 ïîëîæåíèå ïî õ dw + ðàçìåð dw |
.top_s: dd top_s ;+4 ïîëîæåíèå ïî ó dw + ðàçìåð dw |
135,37 → 135,37 |
} |
;Ìàêðîñ ïðîâåðêè ùåë÷êà ìûøêè íàä ãðóïïîé checkboxes. |
macro init_checkboxes start,end |
macro init_checkboxes2 start,end |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
@@: |
push ebp ;óêàçàòåëü íà ïåðâûé checkbox |
call [init_checkbox] ;ìàêðîñ ïðîâåðêè ìûøêè íàä checkbox'îì |
call [init_checkbox2] ;ìàêðîñ ïðîâåðêè ìûøêè íàä checkbox'îì |
add ebp,ch_struc_size |
loop @b |
} |
;Ìàêðîñ ïðîâåðêè ìûøêè ãðóïïû checkboxes. |
macro checkboxes_mouse start,end |
macro checkboxes_mouse2 start,end |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
@@: |
push ebp ;óêàçàòåëü íà ïåðâûé checkbox |
call [check_box_mouse] ;íàðèñîâàòü checkbox |
call [check_box_mouse2] ;íàðèñîâàòü checkbox |
add ebp,ch_struc_size |
loop @b |
} |
;Ìàêðîñ îòðèñîâêè ãðóïïû checkboxes. |
macro checkboxes_draw start,end |
macro checkboxes_draw2 start,end |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
@@: |
push ebp ;óêàçàòåëü íà ïåðâûé checkbox |
call [check_box_draw] ;íàðèñîâàòü checkbox |
call [check_box_draw2] ;íàðèñîâàòü checkbox |
add ebp,ch_struc_size |
loop @b |
} |
/programs/develop/libraries/box_lib/branch/checkbox.asm |
---|
174,17 → 174,17 |
dd 0,0 |
aInit_checkbox db 'init_checkbox',0 |
aCheck_box_draw db 'check_box_draw',0 |
aCheck_box_mouse db 'check_box_mouse',0 |
aVersion_ch db 'version_ch',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 |
;--------------------------------------------------------------------- |
check1 check_box (10 shl 16 + 12),(10 shl 16 + 12),6,0xC0AABBCC,0,0x80000000,check_text,ch_flag_en |
check2 check_box (10 shl 16 + 22),(25 shl 16 + 12),6,0xC0AABBCC,0,0x80000000,check_text2 |
check3 check_box (10 shl 16 + 12),(40 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text3 |
check4 check_box (10 shl 16 + 12),(70 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text4,ch_flag_top |
check5 check_box (10 shl 16 + 12),(100 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text5,ch_flag_middle |
check6 check_box (10 shl 16 + 12),(130 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text6,ch_flag_bottom |
check1 check_box2 (10 shl 16 + 12),(10 shl 16 + 12),6,0xC0AABBCC,0,0x80000000,check_text,ch_flag_en |
check2 check_box2 (10 shl 16 + 22),(25 shl 16 + 12),6,0xC0AABBCC,0,0x80000000,check_text2 |
check3 check_box2 (10 shl 16 + 12),(40 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text3 |
check4 check_box2 (10 shl 16 + 12),(70 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text4,ch_flag_top |
check5 check_box2 (10 shl 16 + 12),(100 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text5,ch_flag_middle |
check6 check_box2 (10 shl 16 + 12),(130 shl 16 + 22),6,0xC0AABBCC,0,0x80000000,check_text6,ch_flag_bottom |
;--------------------------------------------------------------------- |
hed db 'CheckBox Exemples <Lrz> date 15.10.2010',0 |
hed_end: |
/programs/develop/libraries/box_lib/branch/checkbox2.mac |
---|
0,0 → 1,155 |
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 03.10.2010 |
;ôàéë ñîçäàí 13.02.2009 <Lrz> Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
;Checkbox |
;Èíèöèàëèçàöèÿ checkbox |
macro _init_checkbox2 |
{ |
init_checkbox2: |
;ïîäñ÷èòàåì êîë-âî ñèìâîëîâ â äëèííå âûâîäèìîé ñòðîêè. |
pushad |
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå |
mov ebx,dword 2ch_text_margin ;eax=0 |
mov esi,dword 2ch_text_ptr ;óêàçàòåëü íà ñòðî÷êó |
lodsb ;â al ïåðâûé ñèìâîë èç ñòðîêè |
test al,al |
jz .ex_loop |
@@: |
add ebx,6 ;øèðèíà ñèìâîëà |
lodsb |
test al,al |
jnz @b |
.ex_loop: |
mov dword 2ch_sz_str,ebx ;çàïèøèì äëèííó ñòðîêè ñ ó÷åòîì îòñòóïà îò êâàäðàòèêà |
popad |
ret 4 |
} |
macro use_checkbox_draw2 |
{ |
check_box_draw2: |
pushad ;ñîõðàíèì âñå ðåãèñòðû |
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå |
mcall 13,2ch_left_s,2ch_top_s,2ch_border_color ;ðèñóåì ðàìêó ÷åê áîêñà, ôàêòè÷åñêè ðèñóåì ïðÿìîóãîëüíèê è çàêðàøèâàåì ôîí âíóòðè öâåòîì ðàìêè áîêñà |
mov edx,dword 2ch_color ;çàãðóæàåì öâåò ôîíà |
add ebx,1 shl 16 - 2 |
add ecx,1 shl 16 - 2 |
mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà ôîíîì |
test dword 2ch_flags,2 ;äîñòàòü çíà÷åíèå áèòà èç ïåðåìåííîé è ïîìåñòèòü â ôëàã CF |
jz @f ;â åñëè CF=1, òî âûïîëíèì ñëåäóþùóþ ïðîöåäóðó èíà÷å ïåðåéòè íà íèæíþþ @@ |
call check_box_draw_ch2 ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
@@: |
;---------------------------- |
;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
;---------------------------- |
; mov ebx,dword ch_left_s ;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà) äëÿ ÷åê áîêñà |
; add ebx,dword ch_text_margin ;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
; shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
; add ebx,dword ch_left_s ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ |
; mov eax,word ch_top_s ;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà |
; shr eax,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
; add eax,dword ch_top_s ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Y |
; Îïòèìèçàöèÿ äëÿ ÖÏ |
mov ebx,dword 2ch_left_s ;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà) äëÿ ÷åê áîêñà |
mov eax,dword 2ch_top_s ;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà |
mov ecx,eax |
add ebx,dword 2ch_text_margin ;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
shr eax,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ïðàâî (ðàçäåëèì íà 65536) â ax âåðõíàÿ òî÷êà |
shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
sub ecx,8 ;êîððåòèðîâêà ó÷èòûâàåì âûñîòó øðèôòà |
test dword 2ch_flags,ch_flag_bottom ;ïðîâåðèì, íóæíî ëè âûâîäèòü ââåðõó íàäïèñü |
jnz .bottom |
test dword 2ch_flags,ch_flag_middle ;ïðîâåðèì, íóæíî ëè âûâîäèòü â öåíòð íàäïèñü |
jz .top ;îñòàëñÿ òîëüêî top |
shr cx,1 ;ðàçäåëèì íà 2 |
.bottom: |
add ax,cx |
.top: |
add ebx,dword 2ch_left_s ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ |
mov bx,ax |
;ebx õ shl 16 +y êîîðäèíàòû âûâîäà ñòðî÷êè |
mov ecx,dword 2ch_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
mov edx,dword 2ch_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
mcall 4 ;Âûâîä |
popad ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
ret 4 ;âûéäåì èç ïðîöåäóðû è óäàëèì èç ñòåêà óêàçàòåëü íà ñòðóêòóðó (4 áàéòà) |
check_box_clear_ch2: ;î÷èñòêà ÷åê áîêñà |
mov edx,dword 2ch_color ;öâåò âíóòðè ÷åê áîêñà |
jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
check_box_draw_ch2: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
mov edx,dword 2ch_border_color ;çàãðóçèòü öâåò |
@@: |
;Îòîáðàçèòü âêëþ÷åíûé checkbox |
mov ebx,dword 2ch_left_s ;çàãðóæàåì õ shl 16 + äëèííà ïî Õ |
mov ecx,dword 2ch_top_s ;çàãðóæàåì Y shl 16 + äëèííà ïî Y |
add ebx,2 shl 16 - 4 ;ïîñëå ýòèõ èçìåíåíèé (X+2) shl 16 +äëèííà ïî (Õ-2) |
add ecx,2 shl 16 - 4 ;ïîñëå ýòèõ èçìåíåíèé (Y+2) shl 16 +äëèííà ïî (Y-2) |
mcall 13 ;îòîáðàçèòü êâàäðàò âíóòðè checkbox |
ret |
} |
macro use_checkbox_mouse2 |
{ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Îáðàáîò÷èê mouse |
;Ïðè ïîïàäàíèè ìûøêè + íàæàòà êëàâèøà â îáëàñòü checkbox ñîñòîÿíèå áîêñà äîëæíî ìåíÿòñÿ àêòèâíûé - íå àêòèâíûé. |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
check_box_mouse2: ;îáðàáîòêà ìûøè |
pushad |
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå |
mcall 37,2 ;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå. |
test eax,eax ;ïðîâåðêà åñëè ó íàñ â eax=0, âûéäåì |
jz .check_box_mouse_end ;îáðàáîòêà çàêîí÷èëàñü |
; Äà ñîáûòèå: íàæàòèå êëàâèøè ìûøêè ïðîèçîøëî. |
@@: |
mcall 37,1 ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
;íà âûõîäå â eax x shl 16 + y |
;ñðàâíåíèå âåðõíåé òî÷êè ïî Y |
mov ecx,dword 2ch_top_s ;y shl 16 +äëèííà ïî y |
mov ebx,ecx |
shr ebx,16 ;bx = êîîðäèíàòà ïî y |
cmp ax,bx |
jb .check_box_mouse_end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà |
;ñðàâíåíèå íèæíåé òî÷êè ïî Y |
add cx,bx ;ñëîæèì äëèííó ïî y è êîîðäèíàòó âåðõíåé òî÷êè ïî y ïîëè÷èì êîîðäèíàòó íèæíåé òî÷êè ïî Y |
cmp ax,cx |
ja .check_box_mouse_end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
shr eax,16 ;ñìåñòèì êîîðäèíàòó ïî Õ â íèæíóþ ÷àñòü ðåãèñòðà ò.å. â ax |
;ñðàâíåíèå ïî íà÷àëüíîé òî÷êå Õ |
mov ecx,dword 2ch_left_s ;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà) äëÿ ÷åê áîêñà |
mov ebx,ecx |
shr ebx,16 ;bx = êîîðäèíàòà ïî X |
cmp ax,bx |
jb .check_box_mouse_end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî X ÷åì êîîðäèíàòà ïî X ó áîêñà |
;ñðàâíåíèå êîíå÷íîé òî÷êè ïî X |
add bx,cx ;ñëîæèì äëèííó ïî x è êîîðäèíàòó òî÷êè ïî õ ïîëó÷èì êîîðäèíàòó êîíå÷íîé òî÷êè ïî Õ |
add bx,word 2ch_sz_str ;äîáàâèì äëèííó ñòðîêè òåêñòà ñ îòñòóïîì ïðåäâàðòèåëüíî çàïèñàâ èõ â ìîìåíò èíèöèàëèçàöèè |
cmp ax,bx |
ja .check_box_mouse_end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî õ ÷åì êîîðäèíàòà ïî Õ ó áîêñà |
;åñëè âñå ïðîâåðêè áûëè óñïåøíî ïðîéäåíû ìû îáÿçàíû ïîìåíÿòü ñîñòîÿíèå áîêñà |
btc dword 2ch_flags,2 ;ïåðåíîñ 2-ãî áèòà â cf è èíâåðñèÿ åãî |
jc .enable_box ;åñëè CF=1 òî îòîáðàçèì âêëþ÷åííûé áîêñ è âûéäåì |
push dword .check_box_mouse_end ;ôîêóñ -ïîêóñ, âåðíåìñÿ ïîñëå âûçîâà check_box_clear_ch íà ìåòêó check_box_mouse_end |
jmp check_box_clear_ch2 ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà. |
.enable_box: |
call check_box_draw_ch2 ;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ |
.check_box_mouse_end: |
popad ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà |
ret 4 ;âûéòè è âîññòàíîâèì ñòåê |
} |
/programs/develop/libraries/box_lib/trunk/bl_sys.mac |
---|
1,5 → 1,6 |
include 'editbox.mac' ;macro which should make life easier :) specially for editbox |
include 'checkbox.mac' ;macro implements checkbox |
include 'checkbox.mac' ;macro implements checkbox old version |
include 'checkbox2.mac' ;macro implements checkbox version 2 |
include 'optionbox.mac' ;macro implements optionbox |
include 'scrollbar.mac' ;macro implements scrollbar |
include 'd_button.mac' ;macro implements dinamic_button |
/programs/develop/libraries/box_lib/trunk/box_lib.asm |
---|
37,7 → 37,7 |
use_editbox_mouse ;macro reveals processing function of the mouse. |
;---------------------------------------------------- |
;CheckBox |
;CheckBox old version |
;---------------------------------------------------- |
align 16 |
use_checkbox_draw ;macro reveals the function of the display. |
44,6 → 44,15 |
align 16 |
use_checkbox_mouse ;macro reveals processing function of the mouse. |
;---------------------------------------------------- |
;CheckBox2 |
;---------------------------------------------------- |
align 16 |
_init_checkbox2 ;macro for init checkbox |
align 16 |
use_checkbox_draw2 ;macro reveals the function of the display. |
align 16 |
use_checkbox_mouse2 ;macro reveals processing function of the mouse. |
;-------------------------------------------------- |
;radiobutton Group |
132,6 → 141,12 |
dd sz_check_box_mouse, check_box_mouse |
dd szVersion_ch, 0x00000001 |
dd sz_init_checkbox2, init_checkbox2 |
dd sz_check_box_draw2, check_box_draw2 |
dd sz_check_box_mouse2, check_box_mouse2 |
dd szVersion_ch2, 0x00000002 |
dd sz_option_box_draw, option_box_draw |
dd sz_option_box_mouse, option_box_mouse |
dd szVersion_op, 0x00000001 |
230,6 → 245,11 |
sz_check_box_mouse db 'check_box_mouse',0 |
szVersion_ch db 'version_ch',0 |
sz_init_checkbox2 db 'init_checkbox2',0 |
sz_check_box_draw2 db 'check_box_draw2',0 |
sz_check_box_mouse2 db 'check_box_mouse2',0 |
szVersion_ch2 db 'version_ch2',0 |
sz_option_box_draw db 'option_box_draw',0 |
sz_option_box_mouse db 'option_box_mouse',0 |
szVersion_op db 'version_op',0 |
/programs/develop/libraries/box_lib/trunk/box_lib.mac |
---|
148,7 → 148,95 |
loop @b |
} |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use CheckBox ; |
;Last change 12.10.2010 ; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ch_struc_size=36 ;à §¬¥à áâàãªâãàë |
ch_flag_en=10b ;ä« £ ãáâ ®¢«¥®£® 祪 ¡®ªá . |
ch_flag_top=0x0 ;ä« £ à ᯮ«®¦¥¨ï ⥪áâ ¢¢¥àåã â.¥. 3-© ¡¨â |
ch_flag_middle=100b ;ä« £ à ᯮ«®¦¥¨ï ⥪áâ ¢ æ¥âॠâ.¥. 4-© ¡¨â. |
ch_flag_bottom=1000b ;ä« £ à ᯮ«®¦¥¨ï ⥪áâ ¢ ¨§ã â.¥. ¯® 㬮«ç ¨î ¯à¨¨¬ ¥âáï § 票¥ ¢¨§ã â.¥. ®âáãá⢨¥ 3-£® ¨ 4-£® ¡¨â |
2ch_left_s equ [ebp] ;ª®à¤¨ â ç « à¨á®¢ ¨ï ¯® å |
2ch_top_s equ [ebp+4] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã |
2ch_text_margin equ [ebp+8] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
2ch_color equ [ebp+12] ;梥⠢ãâਠcheckbox |
2ch_border_color equ [ebp+16] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ïâ¥«ì® |
2ch_text_color equ [ebp+20] ;[edi+4] ;梥â ⥪áâ |
2ch_text_ptr equ [ebp+24] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨ |
2ch_flags equ [ebp+28] ;ä« £¨ |
2ch_sz_str equ [ebp+32] ;¤«¨ áâப¨, ¢ëç¨á«ï¥âáï ¯à¨ ¨¨æ¨ «¨§ 樨 ª®¬¯®¥â |
struc check_box2 left_s,top_s,ch_text_margin,color,border_color,text_color,text,flags |
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá |
.left_s: dd left_s ;+0 ¯®«®¦¥¨¥ ¯® å dw + à §¬¥à dw |
.top_s: dd top_s ;+4 ¯®«®¦¥¨¥ ¯® ã dw + à §¬¥à dw |
.ch_text_margin: dd ch_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
.color: dd color ;梥⠢ãâਠ祪¡®ªá |
.border_color: dd border_color ;梥â à ¬ª¨ |
.text_color: dd text_color ;梥⠤¯¨á¨ |
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ |
.flags: dd flags+0 ;ä« £¨ |
.size_of_str: dd 0x0 ;¤«¨ áâப¨, ¢ëç¨á«ï¥âáï ¯à¨ ¨¨æ¨ «¨§ 樨 ª®¬¯®¥â |
} |
; ªà®á ¯à®¢¥àª¨ é¥«çª ¬ë誨 ¤ £à㯯®© checkboxes. |
macro init_checkboxes2 start,end |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
@@: |
push ebp ;㪠§ â¥«ì ¯¥à¢ë© checkbox |
call [init_checkbox2] ;¬ ªà®á ¯à®¢¥àª¨ ¬ë誨 ¤ checkbox'®¬ |
add ebp,ch_struc_size |
loop @b |
} |
; ªà®á ¯à®¢¥àª¨ ¬ë誨 £à㯯ë checkboxes. |
macro checkboxes_mouse2 start,end |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
@@: |
push ebp ;㪠§ â¥«ì ¯¥à¢ë© checkbox |
call [check_box_mouse2] ; à¨á®¢ âì checkbox |
add ebp,ch_struc_size |
loop @b |
} |
; ªà®á ®âà¨á®¢ª¨ £à㯯ë checkboxes. |
macro checkboxes_draw2 start,end |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
@@: |
push ebp ;㪠§ â¥«ì ¯¥à¢ë© checkbox |
call [check_box_draw2] ; à¨á®¢ âì checkbox |
add ebp,ch_struc_size |
loop @b |
} |
macro check_boxes_set_sys_color2 start,end,color_table |
{ |
mov ebp,start |
mov ecx,((end-start)/ch_struc_size) |
mov esi,color_table |
@@: |
push dword [esi+32] ;梥â ⥪áâ ¢ à ¡®ç¥© ®¡« á⨠®ª |
pop dword ch_text_color |
push dword [esi+36] ;梥⠣à 䨪¨ ¢ ®ª¥ (à §¤¥«¨â¥«ìë¥ «¨¨¨ ¨ â.¯.) |
pop dword ch_border_color |
add ebp,ch_struc_size |
loop @b |
} |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use OptionBox ; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
/programs/develop/libraries/box_lib/trunk/checkbox2.mac |
---|
0,0 → 1,155 |
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 03.10.2010 |
;ôàéë ñîçäàí 13.02.2009 <Lrz> Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
;Checkbox |
;Èíèöèàëèçàöèÿ checkbox |
macro _init_checkbox2 |
{ |
init_checkbox2: |
;ïîäñ÷èòàåì êîë-âî ñèìâîëîâ â äëèííå âûâîäèìîé ñòðîêè. |
pushad |
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå |
mov ebx,dword 2ch_text_margin ;eax=0 |
mov esi,dword 2ch_text_ptr ;óêàçàòåëü íà ñòðî÷êó |
lodsb ;â al ïåðâûé ñèìâîë èç ñòðîêè |
test al,al |
jz .ex_loop |
@@: |
add ebx,6 ;øèðèíà ñèìâîëà |
lodsb |
test al,al |
jnz @b |
.ex_loop: |
mov dword 2ch_sz_str,ebx ;çàïèøèì äëèííó ñòðîêè ñ ó÷åòîì îòñòóïà îò êâàäðàòèêà |
popad |
ret 4 |
} |
macro use_checkbox_draw2 |
{ |
check_box_draw2: |
pushad ;ñîõðàíèì âñå ðåãèñòðû |
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå |
mcall 13,2ch_left_s,2ch_top_s,2ch_border_color ;ðèñóåì ðàìêó ÷åê áîêñà, ôàêòè÷åñêè ðèñóåì ïðÿìîóãîëüíèê è çàêðàøèâàåì ôîí âíóòðè öâåòîì ðàìêè áîêñà |
mov edx,dword 2ch_color ;çàãðóæàåì öâåò ôîíà |
add ebx,1 shl 16 - 2 |
add ecx,1 shl 16 - 2 |
mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà ôîíîì |
test dword 2ch_flags,2 ;äîñòàòü çíà÷åíèå áèòà èç ïåðåìåííîé è ïîìåñòèòü â ôëàã CF |
jz @f ;â åñëè CF=1, òî âûïîëíèì ñëåäóþùóþ ïðîöåäóðó èíà÷å ïåðåéòè íà íèæíþþ @@ |
call check_box_draw_ch2 ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
@@: |
;---------------------------- |
;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
;---------------------------- |
; mov ebx,dword ch_left_s ;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà) äëÿ ÷åê áîêñà |
; add ebx,dword ch_text_margin ;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
; shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
; add ebx,dword ch_left_s ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ |
; mov eax,word ch_top_s ;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà |
; shr eax,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
; add eax,dword ch_top_s ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Y |
; Îïòèìèçàöèÿ äëÿ ÖÏ |
mov ebx,dword 2ch_left_s ;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà) äëÿ ÷åê áîêñà |
mov eax,dword 2ch_top_s ;çàãðóçèì çíà÷åíèå ïî (y shl 16 + äëèííà) äëÿ ÷åê áîêñà |
mov ecx,eax |
add ebx,dword 2ch_text_margin ;äîáàâèì ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
shr eax,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ïðàâî (ðàçäåëèì íà 65536) â ax âåðõíàÿ òî÷êà |
shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
sub ecx,8 ;êîððåòèðîâêà ó÷èòûâàåì âûñîòó øðèôòà |
test dword 2ch_flags,ch_flag_bottom ;ïðîâåðèì, íóæíî ëè âûâîäèòü ââåðõó íàäïèñü |
jnz .bottom |
test dword 2ch_flags,ch_flag_middle ;ïðîâåðèì, íóæíî ëè âûâîäèòü â öåíòð íàäïèñü |
jz .top ;îñòàëñÿ òîëüêî top |
shr cx,1 ;ðàçäåëèì íà 2 |
.bottom: |
add ax,cx |
.top: |
add ebx,dword 2ch_left_s ;cêîððåêòèðóåì ïîçèöèþ Õ. Ò.å. ñåé÷àñ â âåðõíåé ÷àñòè ebx ó íàñ òî÷êà íà÷àëà âûâîäà òåêñòà ïî Õ |
mov bx,ax |
;ebx õ shl 16 +y êîîðäèíàòû âûâîäà ñòðî÷êè |
mov ecx,dword 2ch_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
mov edx,dword 2ch_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
mcall 4 ;Âûâîä |
popad ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
ret 4 ;âûéäåì èç ïðîöåäóðû è óäàëèì èç ñòåêà óêàçàòåëü íà ñòðóêòóðó (4 áàéòà) |
check_box_clear_ch2: ;î÷èñòêà ÷åê áîêñà |
mov edx,dword 2ch_color ;öâåò âíóòðè ÷åê áîêñà |
jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
check_box_draw_ch2: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
mov edx,dword 2ch_border_color ;çàãðóçèòü öâåò |
@@: |
;Îòîáðàçèòü âêëþ÷åíûé checkbox |
mov ebx,dword 2ch_left_s ;çàãðóæàåì õ shl 16 + äëèííà ïî Õ |
mov ecx,dword 2ch_top_s ;çàãðóæàåì Y shl 16 + äëèííà ïî Y |
add ebx,2 shl 16 - 4 ;ïîñëå ýòèõ èçìåíåíèé (X+2) shl 16 +äëèííà ïî (Õ-2) |
add ecx,2 shl 16 - 4 ;ïîñëå ýòèõ èçìåíåíèé (Y+2) shl 16 +äëèííà ïî (Y-2) |
mcall 13 ;îòîáðàçèòü êâàäðàò âíóòðè checkbox |
ret |
} |
macro use_checkbox_mouse2 |
{ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Îáðàáîò÷èê mouse |
;Ïðè ïîïàäàíèè ìûøêè + íàæàòà êëàâèøà â îáëàñòü checkbox ñîñòîÿíèå áîêñà äîëæíî ìåíÿòñÿ àêòèâíûé - íå àêòèâíûé. |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
check_box_mouse2: ;îáðàáîòêà ìûøè |
pushad |
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå |
mcall 37,2 ;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå. |
test eax,eax ;ïðîâåðêà åñëè ó íàñ â eax=0, âûéäåì |
jz .check_box_mouse_end ;îáðàáîòêà çàêîí÷èëàñü |
; Äà ñîáûòèå: íàæàòèå êëàâèøè ìûøêè ïðîèçîøëî. |
@@: |
mcall 37,1 ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
;íà âûõîäå â eax x shl 16 + y |
;ñðàâíåíèå âåðõíåé òî÷êè ïî Y |
mov ecx,dword 2ch_top_s ;y shl 16 +äëèííà ïî y |
mov ebx,ecx |
shr ebx,16 ;bx = êîîðäèíàòà ïî y |
cmp ax,bx |
jb .check_box_mouse_end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà |
;ñðàâíåíèå íèæíåé òî÷êè ïî Y |
add cx,bx ;ñëîæèì äëèííó ïî y è êîîðäèíàòó âåðõíåé òî÷êè ïî y ïîëè÷èì êîîðäèíàòó íèæíåé òî÷êè ïî Y |
cmp ax,cx |
ja .check_box_mouse_end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî y ÷åì êîîðäèíàòà ïî Y ó áîêñà |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
shr eax,16 ;ñìåñòèì êîîðäèíàòó ïî Õ â íèæíóþ ÷àñòü ðåãèñòðà ò.å. â ax |
;ñðàâíåíèå ïî íà÷àëüíîé òî÷êå Õ |
mov ecx,dword 2ch_left_s ;çàãðóçèòü çíà÷åíèå (õ shl 16 + äëèííà) äëÿ ÷åê áîêñà |
mov ebx,ecx |
shr ebx,16 ;bx = êîîðäèíàòà ïî X |
cmp ax,bx |
jb .check_box_mouse_end ;óêàçàòåëü ìûøêè ìåíüøå íà÷àëüíîé êîîðäèíàòû ïî X ÷åì êîîðäèíàòà ïî X ó áîêñà |
;ñðàâíåíèå êîíå÷íîé òî÷êè ïî X |
add bx,cx ;ñëîæèì äëèííó ïî x è êîîðäèíàòó òî÷êè ïî õ ïîëó÷èì êîîðäèíàòó êîíå÷íîé òî÷êè ïî Õ |
add bx,word 2ch_sz_str ;äîáàâèì äëèííó ñòðîêè òåêñòà ñ îòñòóïîì ïðåäâàðòèåëüíî çàïèñàâ èõ â ìîìåíò èíèöèàëèçàöèè |
cmp ax,bx |
ja .check_box_mouse_end ;óêàçàòåëü ìûøêè áîëüøå êîíå÷íîé êîîðäèíàòû ïî õ ÷åì êîîðäèíàòà ïî Õ ó áîêñà |
;åñëè âñå ïðîâåðêè áûëè óñïåøíî ïðîéäåíû ìû îáÿçàíû ïîìåíÿòü ñîñòîÿíèå áîêñà |
btc dword 2ch_flags,2 ;ïåðåíîñ 2-ãî áèòà â cf è èíâåðñèÿ åãî |
jc .enable_box ;åñëè CF=1 òî îòîáðàçèì âêëþ÷åííûé áîêñ è âûéäåì |
push dword .check_box_mouse_end ;ôîêóñ -ïîêóñ, âåðíåìñÿ ïîñëå âûçîâà check_box_clear_ch íà ìåòêó check_box_mouse_end |
jmp check_box_clear_ch2 ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà. |
.enable_box: |
call check_box_draw_ch2 ;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ |
.check_box_mouse_end: |
popad ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà |
ret 4 ;âûéòè è âîññòàíîâèì ñòåê |
} |