Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1720 → Rev 6789

/programs/develop/libraries/box_lib/trunk/checkbox.asm/checkbox2.mac
1,11 → 1,9
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 03.10.2010
;Ïîñëåäíàÿ ìîäèôèêàöèÿ 07.12.2016
;ôàéë ñîçäàí 13.02.2009 <Lrz> Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
;Checkbox
 
;Èíèöèàëèçàöèÿ checkbox
macro _init_checkbox2
{
align 16
init_checkbox2:
;ïîäñ÷èòàåì êîë-âî ñèìâîëîâ â äëèííå âûâîäèìîé ñòðîêè.
pushad
27,14 → 25,13
;íà ñëó÷àé åñëè ïîëüçîâàòåëü çàáûë åãî ñàìîñòîÿòåëüíî ïîñòàâèòü â ñòðóêòóðå
popad
ret 4
}
 
macro use_checkbox_draw2
{
 
align 16
check_box_draw2:
pushad ;ñîõðàíèì âñå ðåãèñòðû
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
mcall 13,2ch_left_s,2ch_top_s,2ch_border_color ;ðèñóåì ðàìêó ÷åê áîêñà, ôàêòè÷åñêè ðèñóåì ïðÿìîóãîëüíèê è çàêðàøèâàåì ôîí âíóòðè öâåòîì ðàìêè áîêñà
mcall SF_DRAW_RECT,2ch_left_s,2ch_top_s,2ch_border_color ;ðèñóåì ðàìêó ÷åê áîêñà, ôàêòè÷åñêè ðèñóåì ïðÿìîóãîëüíèê è çàêðàøèâàåì ôîí âíóòðè öâåòîì ðàìêè áîêñà
 
mov edx,dword 2ch_color ;çàãðóæàåì öâåò ôîíà
add ebx,1 shl 16 - 2
83,7 → 80,7
 
mov ecx,dword 2ch_text_color ;çàãðóçèì öâåò íàäïèñè + flags
mov edx,dword 2ch_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó
mcall 4 ;Âûâîä
mcall SF_DRAW_TEXT
popad ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà
ret 4 ;âûéäåì èç ïðîöåäóðû è óäàëèì èç ñòåêà óêàçàòåëü íà ñòðóêòóðó (4 áàéòà)
 
98,27 → 95,24
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
mcall SF_DRAW_RECT ;îòîáðàçèòü êâàäðàò âíóòðè checkbox
ret
}
 
 
macro use_checkbox_mouse2
{
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Îáðàáîò÷èê mouse
;Ïðè ïîïàäàíèè ìûøêè + íàæàòà êëàâèøà â îáëàñòü checkbox ñîñòîÿíèå áîêñà äîëæíî ìåíÿòñÿ àêòèâíûé - íå àêòèâíûé.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
align 16
check_box_mouse2: ;îáðàáîòêà ìûøè
pushad
mov ebp,dword [esp+36] ;çàãðóæàåì óêàçàòåëü íà ñòðóêòóðó, óêàçàòåëü ìû ïåðåäàåì â ñòåêå
mcall 37,2 ;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå.
mcall SF_MOUSE_GET,SSF_BUTTON ;ïðîâåðÿåì ñîñòîÿíèå êëàâèø ìûøêè. Áûëî ëè ñîáûòèå íàæàòàÿ êëàâèøà íà ìûøêå.
test eax,eax ;ïðîâåðêà åñëè ó íàñ â eax=0, âûéäåì
jz .check_box_mouse_end ;îáðàáîòêà çàêîí÷èëàñü
; Äà ñîáûòèå: íàæàòèå êëàâèøè ìûøêè ïðîèçîøëî.
@@:
mcall 37,1 ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà
mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà
;íà âûõîäå â eax x shl 16 + y
;ñðàâíåíèå âåðõíåé òî÷êè ïî Y
mov ecx,dword 2ch_top_s ;y shl 16 +äëèííà ïî y
154,4 → 148,3
.check_box_mouse_end:
popad ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà
ret 4 ;âûéòè è âîññòàíîâèì ñòåê
}