Rev 1227 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1227 | Rev 1372 | ||
---|---|---|---|
1 | ;ôàéë ñîçäàí 13.02.2009 |
1 | ;ôàéë ñîçäàí 13.02.2009 |
2 | ;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
3 | ;Optionbox |
3 | ;Optionbox |
- | 4 | ||
- | 5 | struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags |
|
- | 6 | { ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá |
|
- | 7 | op_flag_en=10b |
|
- | 8 | .option_group: dd point_gr |
|
- | 9 | .left: dw left ;+0 ;¯®«®¦¥¨¥ ¯® å |
|
- | 10 | .top: dw top ;¯®«®¦¥¨¥ ¯® ã |
|
- | 11 | .ch_text_margin: dd op_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
|
- | 12 | .ch_size: dd op_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12 |
|
- | 13 | .color: dd color ;梥⠢ãâਠ祪¡®ªá |
|
- | 14 | .border_color: dd border_color ;梥â à ¬ª¨ |
|
- | 15 | .text_color: dd text_color ;梥⠤¯¨á¨ |
|
- | 16 | .text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ |
|
- | 17 | .ch_text_length: dd op_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨ |
|
- | 18 | .flags: dd flags+0 ; ä« £¨ |
|
- | 19 | } |
|
4 | 20 | ||
5 | macro use_optionbox_driver ;ìàêðîñû êîòîðûå óïðàâëÿþò ðàáîòîé áîêñà ) |
21 | macro use_optionbox_driver ;ìàêðîñû êîòîðûå óïðàâëÿþò ðàáîòîé áîêñà ) |
6 | { |
22 | { |
7 | option_box_draw: |
23 | option_box_draw: |
8 | pusha |
24 | pusha |
9 | 25 | ||
10 | mov eax,dword [esp+36] |
26 | mov eax,dword [esp+36] |
11 | @@: mov edi,dword [eax] |
27 | @@: mov edi,dword [eax] |
12 | test edi,edi |
28 | test edi,edi |
13 | je option_check |
29 | je option_check |
14 | call option_box_draw_box |
30 | call option_box_draw_box |
15 | add eax,4 |
31 | add eax,4 |
16 | jmp @b |
32 | jmp @b |
17 | 33 | ||
18 | option_check: |
34 | option_check: |
19 | mov eax,dword [esp+36] |
35 | mov eax,dword [esp+36] |
20 | @@: mov edi,dword [eax] |
36 | @@: mov edi,dword [eax] |
21 | test edi,edi |
37 | test edi,edi |
22 | je @f |
38 | je @f |
23 | 39 | ||
24 | mov ebx,dword [edi] |
40 | mov ebx,dword [edi] |
25 | mov ebx,dword [ebx] |
41 | mov ebx,dword [ebx] |
26 | cmp edi,ebx |
42 | cmp edi,ebx |
27 | jne .clear_op |
43 | jne .clear_op |
28 | 44 | ||
29 | pusha |
45 | pusha |
30 | call option_box_draw_op |
46 | call option_box_draw_op |
31 | popa |
47 | popa |
32 | add eax,4 |
48 | add eax,4 |
33 | jmp @b |
49 | jmp @b |
34 | 50 | ||
35 | .clear_op: |
51 | .clear_op: |
36 | pusha |
52 | pusha |
37 | call option_box_clear_op |
53 | call option_box_clear_op |
38 | popa |
54 | popa |
39 | add eax,4 |
55 | add eax,4 |
40 | jmp @b |
56 | jmp @b |
41 | 57 | ||
42 | 58 | ||
43 | @@: popa |
59 | @@: popa |
44 | ret 4 |
60 | ret 4 |
45 | ; exit âîîáùå :) |
61 | ; exit âîîáùå :) |
46 | 62 | ||
47 | 63 | ||
48 | option_box_mouse: |
64 | option_box_mouse: |
49 | pusha |
65 | pusha |
50 | mcall 37,2 |
66 | mcall 37,2 |
51 | test eax,eax |
67 | test eax,eax |
52 | jnz @f |
68 | jnz @f |
53 | popa |
69 | popa |
54 | ret 4 |
70 | ret 4 |
55 | @@: |
71 | @@: |
56 | mov eax,dword [esp+36] |
72 | mov eax,dword [esp+36] |
57 | @@: mov edi,dword [eax] |
73 | @@: mov edi,dword [eax] |
58 | test edi,edi |
74 | test edi,edi |
59 | je option_check |
75 | je option_check |
60 | call option_box_mouse_op |
76 | call option_box_mouse_op |
61 | add eax,4 |
77 | add eax,4 |
62 | jmp @b |
78 | jmp @b |
63 | 79 | ||
64 | } |
80 | } |
65 | macro use_optionbox_draw |
81 | macro use_optionbox_draw |
66 | { |
82 | { |
67 | option_box_draw_box: |
83 | option_box_draw_box: |
68 | option_group equ [edi] |
84 | option_group equ [edi] |
69 | op_left equ [edi+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
85 | op_left equ [edi+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
70 | op_top equ [edi+6] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
86 | op_top equ [edi+6] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
71 | op_text_margin equ [edi+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
87 | op_text_margin equ [edi+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
72 | op_size equ [edi+12] ;12 ðàçìåð êâàäðàòà ÷åê áîêñà |
88 | op_size equ [edi+12] ;12 ðàçìåð êâàäðàòà ÷åê áîêñà |
73 | op_color equ [edi+16] |
89 | op_color equ [edi+16] |
74 | op_border_color equ [edi+20] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
90 | op_border_color equ [edi+20] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
75 | op_text_color equ [edi+24];[edi+4] ;öâåò òåêñòà |
91 | op_text_color equ [edi+24];[edi+4] ;öâåò òåêñòà |
76 | op_text_ptr equ [edi+28] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
92 | op_text_ptr equ [edi+28] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
77 | op_text_length equ [edi+32] |
93 | op_text_length equ [edi+32] |
78 | op_flags equ [edi+36] ;ôëàãè |
94 | op_flags equ [edi+36] ;ôëàãè |
79 | 95 | ||
80 | pusha ;ñîõðàíèì âñå ðåãèñòðû |
96 | pusha ;ñîõðàíèì âñå ðåãèñòðû |
81 | 97 | ||
82 | movzx ebx,word op_left |
98 | movzx ebx,word op_left |
83 | shl ebx,16 |
99 | shl ebx,16 |
84 | add ebx,dword op_size |
100 | add ebx,dword op_size |
85 | movzx ecx,word op_top |
101 | movzx ecx,word op_top |
86 | shl ecx,16 |
102 | shl ecx,16 |
87 | add ecx,dword op_size |
103 | add ecx,dword op_size |
88 | mov edx,dword op_border_color |
104 | mov edx,dword op_border_color |
89 | mov eax,13 |
105 | mov eax,13 |
90 | mcall ;ðèñóåì ðàìêó |
106 | mcall ;ðèñóåì ðàìêó |
91 | 107 | ||
92 | mov edx,dword op_color |
108 | mov edx,dword op_color |
93 | add ebx,1 shl 16 - 2 |
109 | add ebx,1 shl 16 - 2 |
94 | add ecx,1 shl 16 - 2 |
110 | add ecx,1 shl 16 - 2 |
95 | mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà |
111 | mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà |
96 | 112 | ||
97 | ; mov eax,dword option_group |
113 | ; mov eax,dword option_group |
98 | ; mov dword eax,[eax] |
114 | ; mov dword eax,[eax] |
99 | ; cmp eax,edi |
115 | ; cmp eax,edi |
100 | ; jne @f |
116 | ; jne @f |
101 | ; call option_box_draw_op ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
117 | ; call option_box_draw_op ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
102 | 118 | ||
103 | 119 | ||
104 | ;---------------------------- |
120 | ;---------------------------- |
105 | ;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
121 | ;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
106 | ;---------------------------- |
122 | ;---------------------------- |
107 | @@: movzx ebx,word op_left ;çàãðóçèòü çíà÷åíèå õ äëÿ ÷åê áîêñà |
123 | @@: movzx ebx,word op_left ;çàãðóçèòü çíà÷åíèå õ äëÿ ÷åê áîêñà |
108 | add ebx,dword op_size |
124 | add ebx,dword op_size |
109 | add ebx,dword op_text_margin;äîáàâèòü ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
125 | add ebx,dword op_text_margin;äîáàâèòü ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
110 | shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
126 | shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
111 | mov bx,word op_top ;çàãðóçèì çíà÷åíèå ïî y |
127 | mov bx,word op_top ;çàãðóçèì çíà÷åíèå ïî y |
112 | add ebx,op_size |
128 | add ebx,op_size |
113 | mov ecx,dword op_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
129 | mov ecx,dword op_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
114 | sub ebx,7 ;äîáàâèì çíà÷åíèå äëèíû ñòîðîíû -9+2 |
130 | sub ebx,7 ;äîáàâèì çíà÷åíèå äëèíû ñòîðîíû -9+2 |
115 | 131 | ||
116 | mov edx,dword op_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
132 | mov edx,dword op_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
117 | mov esi,dword op_text_length |
133 | mov esi,dword op_text_length |
118 | ;âíåñåì â eax çíà÷åíèå âûâîäà íàäïèñè íà êàíâó |
134 | ;âíåñåì â eax çíà÷åíèå âûâîäà íàäïèñè íà êàíâó |
119 | mov eax,4 |
135 | mov eax,4 |
120 | mcall ;Âûâîä |
136 | mcall ;Âûâîä |
121 | popa ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
137 | popa ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
122 | ret ;âûéäåì èç ïðîöåäóðû |
138 | ret ;âûéäåì èç ïðîöåäóðû |
123 | 139 | ||
124 | option_box_clear_op: ;î÷èñòêà ÷åê áîêñà |
140 | option_box_clear_op: ;î÷èñòêà ÷åê áîêñà |
125 | mov edx,dword op_color ;öâåò âíóòðè ÷åê áîêñà |
141 | mov edx,dword op_color ;öâåò âíóòðè ÷åê áîêñà |
126 | jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
142 | jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
127 | 143 | ||
128 | 144 | ||
129 | option_box_draw_op: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
145 | option_box_draw_op: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
130 | mov edx,dword op_border_color ;çàãðóçèòü öâåò |
146 | mov edx,dword op_border_color ;çàãðóçèòü öâåò |
131 | @@: |
147 | @@: |
132 | movzx ebx,word op_left ;çàãðóçèòü êîîðäèíàòó ïî õ |
148 | movzx ebx,word op_left ;çàãðóçèòü êîîðäèíàòó ïî õ |
133 | mov eax,dword op_size |
149 | mov eax,dword op_size |
134 | mov bp,ax |
150 | mov bp,ax |
135 | shr eax,2 |
151 | shr eax,2 |
136 | push ax |
152 | push ax |
137 | 153 | ||
138 | push ax |
154 | push ax |
139 | add ebx,eax |
155 | add ebx,eax |
140 | shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
156 | shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
141 | pop ax |
157 | pop ax |
142 | lea eax,[eax*2] |
158 | lea eax,[eax*2] |
143 | sub bp,ax ;ñîõðàíèì ðåãèñòð bx â ðåãèñòðå óêàçàòåëÿ áàçû |
159 | sub bp,ax ;ñîõðàíèì ðåãèñòð bx â ðåãèñòðå óêàçàòåëÿ áàçû |
144 | mov bx,bp |
160 | mov bx,bp |
145 | 161 | ||
146 | movzx ecx,word op_top ;çàãðóçèòü êîîðäèíàòó ïî ó |
162 | movzx ecx,word op_top ;çàãðóçèòü êîîðäèíàòó ïî ó |
147 | pop ax |
163 | pop ax |
148 | add cx,ax |
164 | add cx,ax |
149 | shl ecx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
165 | shl ecx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
150 | mov cx,bp ;çàãðóçèì çíà÷åíèÿ ðåãèñòðà óêàçàòåëÿ áàçû â cx |
166 | mov cx,bp ;çàãðóçèì çíà÷åíèÿ ðåãèñòðà óêàçàòåëÿ áàçû â cx |
151 | mov eax,13 ;â eax - çíà÷åíèÿ ôóíêöèè äëÿ âûâîäà ïîëîñû ò.å. ïî ñóòè ïðÿìîóãîëüíèêà, êîòîðûé îòîáðàæàåò âêëþ÷åííûé êîìïîíåíò ÷åê áîêñ |
167 | mov eax,13 ;â eax - çíà÷åíèÿ ôóíêöèè äëÿ âûâîäà ïîëîñû ò.å. ïî ñóòè ïðÿìîóãîëüíèêà, êîòîðûé îòîáðàæàåò âêëþ÷åííûé êîìïîíåíò ÷åê áîêñ |
152 | mcall ;âûâîä |
168 | mcall ;âûâîä |
153 | ret ;âûéòè èç ïðîöåäóðû |
169 | ret ;âûéòè èç ïðîöåäóðû |
154 | } |
170 | } |
155 | 171 | ||
156 | 172 | ||
157 | macro use_optionbox_mouse |
173 | macro use_optionbox_mouse |
158 | { |
174 | { |
159 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
175 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
160 | ;Îáðàáîò÷èê mouse |
176 | ;Îáðàáîò÷èê mouse |
161 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
177 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
162 | option_box_mouse_op: ;îáðàáîòêà ìûøè |
178 | option_box_mouse_op: ;îáðàáîòêà ìûøè |
163 | pusha |
179 | pusha |
164 | mov esi,dword op_text_length ;çàãðóçèòü êîë-âî ñèìâîëîâ â òåêñòîâîé ñòðîêå |
180 | mov esi,dword op_text_length ;çàãðóçèòü êîë-âî ñèìâîëîâ â òåêñòîâîé ñòðîêå |
165 | ;Óìíîæåíèå íà 6 Áûñòðîå óìíîæåíèå ìîæíî âîñïîëüçîâàòüñÿ ëþáûì ìç ìåòîäîâ, íî íà ñòàðûõ Ïðîöåññîðàõ (386,486,P1)áûñòðåå áóäåò ñ èíñòðóêöèåé Lea |
181 | ;Óìíîæåíèå íà 6 Áûñòðîå óìíîæåíèå ìîæíî âîñïîëüçîâàòüñÿ ëþáûì ìç ìåòîäîâ, íî íà ñòàðûõ Ïðîöåññîðàõ (386,486,P1)áûñòðåå áóäåò ñ èíñòðóêöèåé Lea |
166 | ; lea esi,[eax*2+eax] |
182 | ; lea esi,[eax*2+eax] |
167 | ; shl eax,1 |
183 | ; shl eax,1 |
168 | imul esi,6 ; èëè ìîæíî è òàê óìíîæèòü íà 6 |
184 | imul esi,6 ; èëè ìîæíî è òàê óìíîæèòü íà 6 |
169 | xor ebx,ebx |
185 | xor ebx,ebx |
170 | add esi,dword op_text_margin ;äîáàâèòü 3 - ðàññòîÿíèå îò ÷åê áîêñà äî íàäïèñè |
186 | add esi,dword op_text_margin ;äîáàâèòü 3 - ðàññòîÿíèå îò ÷åê áîêñà äî íàäïèñè |
171 | 187 | ||
172 | mov eax,37 ;ïîëó÷èì êîîðäèíàòû ìûøêè |
188 | mov eax,37 ;ïîëó÷èì êîîðäèíàòû ìûøêè |
173 | inc ebx ;äîáàâèòü 1 |
189 | inc ebx ;äîáàâèòü 1 |
174 | mcall ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
190 | mcall ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
175 | 191 | ||
176 | movzx ebx,word op_top ;çàãðóçèòü â bx çíà÷åíèå êîîðäèíàòû ó |
192 | movzx ebx,word op_top ;çàãðóçèòü â bx çíà÷åíèå êîîðäèíàòû ó |
177 | cmp ax,bx ;ñðàâíèòü ñ ñ êîîðäèíàòîé êóðñîðà |
193 | cmp ax,bx ;ñðàâíèòü ñ ñ êîîðäèíàòîé êóðñîðà |
178 | jl option_box_mouse_end ;SF <> OF åñëè ìåíüøå |
194 | jl option_box_mouse_end ;SF <> OF åñëè ìåíüøå |
179 | add ebx,dword op_size ;äîáàâèòü ðàçìåð |
195 | add ebx,dword op_size ;äîáàâèòü ðàçìåð |
180 | cmp ax,bx ;ñðàâíèòü |
196 | cmp ax,bx ;ñðàâíèòü |
181 | jg option_box_mouse_end ;ZF = 0 è SF = OF åñëè áîëüøå |
197 | jg option_box_mouse_end ;ZF = 0 è SF = OF åñëè áîëüøå |
182 | 198 | ||
183 | shr eax,16 ;ðàçäåëèì íà 65536 èëè ïðîñòî ñäâèíåì áèòû íà 16 çíà÷åíèé |
199 | shr eax,16 ;ðàçäåëèì íà 65536 èëè ïðîñòî ñäâèíåì áèòû íà 16 çíà÷åíèé |
184 | movzx ebx,word op_left ;ïðîèçâåäåì àíàëîãè÷íîå ñðàâíåíèå |
200 | movzx ebx,word op_left ;ïðîèçâåäåì àíàëîãè÷íîå ñðàâíåíèå |
185 | cmp ax,bx ;ñðàâíèòü ðåãèñòðû |
201 | cmp ax,bx ;ñðàâíèòü ðåãèñòðû |
186 | jl option_box_mouse_end ;åñëè ìåíüøå |
202 | jl option_box_mouse_end ;åñëè ìåíüøå |
187 | add ebx,dword op_size ;äîáàâèòü äëèíó ñòîðîíû ïðÿìîóãîëüíèêà |
203 | add ebx,dword op_size ;äîáàâèòü äëèíó ñòîðîíû ïðÿìîóãîëüíèêà |
188 | add ebx,esi ;Ó÷åñòü â çíà÷åíèè ïî õ åùå è äëèíó íàäïèñè ê ÷åêáîêñó |
204 | add ebx,esi ;Ó÷åñòü â çíà÷åíèè ïî õ åùå è äëèíó íàäïèñè ê ÷åêáîêñó |
189 | cmp ax,bx ;ñòðàâíèòü ðåãèñòðû |
205 | cmp ax,bx ;ñòðàâíèòü ðåãèñòðû |
190 | jg option_box_mouse_end ;åñëè áîëüøå |
206 | jg option_box_mouse_end ;åñëè áîëüøå |
191 | mov eax,dword option_group |
207 | mov eax,dword option_group |
192 | mov [eax],edi |
208 | mov [eax],edi |
193 | 209 | ||
194 | option_box_mouse_end: |
210 | option_box_mouse_end: |
195 | popa ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà |
211 | popa ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà |
196 | ret ;âûéòè |
212 | ret ;âûéòè |
197 | 213 | ||
198 | }> |
214 | }> |