Rev 1372 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1372 | Rev 1432 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;ôàéë ñîçäàí 13.02.2009 |
1 | ;ä ©« ᮧ¤ 13.02.2009 |
2 | ;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj |
3 | ;Optionbox |
3 | ;Optionbox |
Line 4... | Line -... | ||
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 | } |
- | |
20 | 4 | ||
21 | macro use_optionbox_driver ;ìàêðîñû êîòîðûå óïðàâëÿþò ðàáîòîé áîêñà ) |
5 | macro use_optionbox_driver ;¬ ªà®áë ª®â®àë¥ ã¯à ¢«ïîâ à ¡®â®© ¡®ªá ) |
22 | { |
6 | { |
23 | option_box_draw: |
7 | option_box_draw: |
Line 24... | Line 8... | ||
24 | pusha |
8 | pusha |
Line 56... | Line 40... | ||
56 | jmp @b |
40 | jmp @b |
Line 57... | Line 41... | ||
57 | 41 | ||
58 | 42 | ||
59 | @@: popa |
43 | @@: popa |
Line 60... | Line 44... | ||
60 | ret 4 |
44 | ret 4 |
61 | ; exit âîîáùå :) |
45 | ; exit ¢®®¡é¥ :) |
62 | 46 | ||
Line 80... | Line 64... | ||
80 | } |
64 | } |
81 | macro use_optionbox_draw |
65 | macro use_optionbox_draw |
82 | { |
66 | { |
83 | option_box_draw_box: |
67 | option_box_draw_box: |
84 | option_group equ [edi] |
68 | option_group equ [edi] |
85 | op_left equ [edi+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
69 | op_left equ [edi+4] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® å |
86 | op_top equ [edi+6] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
70 | op_top equ [edi+6] ;ª®®à¤¨ â ç « à¨á®¢ ¨ï ¯® ã |
87 | op_text_margin equ [edi+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
71 | op_text_margin equ [edi+8] ;=4 à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
88 | op_size equ [edi+12] ;12 ðàçìåð êâàäðàòà ÷åê áîêñà |
72 | op_size equ [edi+12] ;12 à §¬¥à ª¢ ¤à â 祪 ¡®ªá |
89 | op_color equ [edi+16] |
73 | op_color equ [edi+16] |
90 | op_border_color equ [edi+20] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
74 | op_border_color equ [edi+20] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦® § ¤ âì á ¬®áâ®ïâ¥«ì® |
91 | op_text_color equ [edi+24];[edi+4] ;öâåò òåêñòà |
75 | op_text_color equ [edi+24];[edi+4] ;梥â ⥪áâ |
92 | op_text_ptr equ [edi+28] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
76 | op_text_ptr equ [edi+28] ;㪠§ ⥫ì ç «® ⥪á⮢®© áâப¨ |
93 | op_text_length equ [edi+32] |
77 | op_text_length equ [edi+32] |
94 | op_flags equ [edi+36] ;ôëàãè |
78 | op_flags equ [edi+36] ;ä« £¨ |
Line 95... | Line 79... | ||
95 | 79 | ||
Line 96... | Line 80... | ||
96 | pusha ;ñîõðàíèì âñå ðåãèñòðû |
80 | pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë |
97 | 81 | ||
98 | movzx ebx,word op_left |
82 | movzx ebx,word op_left |
99 | shl ebx,16 |
83 | shl ebx,16 |
100 | add ebx,dword op_size |
84 | add ebx,dword op_size |
101 | movzx ecx,word op_top |
85 | movzx ecx,word op_top |
102 | shl ecx,16 |
86 | shl ecx,16 |
103 | add ecx,dword op_size |
87 | add ecx,dword op_size |
104 | mov edx,dword op_border_color |
88 | mov edx,dword op_border_color |
Line 105... | Line 89... | ||
105 | mov eax,13 |
89 | mov eax,13 |
106 | mcall ;ðèñóåì ðàìêó |
90 | mcall ;à¨á㥬 à ¬ªã |
107 | 91 | ||
108 | mov edx,dword op_color |
92 | mov edx,dword op_color |
Line 109... | Line 93... | ||
109 | add ebx,1 shl 16 - 2 |
93 | add ebx,1 shl 16 - 2 |
110 | add ecx,1 shl 16 - 2 |
94 | add ecx,1 shl 16 - 2 |
111 | mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà |
95 | mcall ;§ ªà 訢 ¥¬ ¢ãâ८á⨠祪¡®ªá |
112 | 96 | ||
113 | ; mov eax,dword option_group |
97 | ; mov eax,dword option_group |
Line 114... | Line 98... | ||
114 | ; mov dword eax,[eax] |
98 | ; mov dword eax,[eax] |
115 | ; cmp eax,edi |
99 | ; cmp eax,edi |
116 | ; jne @f |
100 | ; jne @f |
117 | ; call option_box_draw_op ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
101 | ; call option_box_draw_op ; à¨á®¢ âì ¢ª«îç¥ë© 祪 ¡®ªá |
118 | 102 | ||
119 | 103 | ||
120 | ;---------------------------- |
104 | ;---------------------------- |
121 | ;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
105 | ;à áç¥â ªã¤ ¡ã¤¥â ¯à®¨§¢¥¤¥ ¢ë¢®¤ ⥪áâ |
122 | ;---------------------------- |
106 | ;---------------------------- |
123 | @@: movzx ebx,word op_left ;çàãðóçèòü çíà÷åíèå õ äëÿ ÷åê áîêñà |
107 | @@: movzx ebx,word op_left ;§ £à㧨âì § 票¥ å ¤«ï 祪 ¡®ªá |
124 | add ebx,dword op_size |
108 | add ebx,dword op_size |
Line 125... | Line 109... | ||
125 | add ebx,dword op_text_margin;äîáàâèòü ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
109 | add ebx,dword op_text_margin;¤®¡ ¢¨âì à §¬¥à áâ®à®ë ¨ à ááâ®ï¨¥ ª®â®à®¬ ç¥âáï ¢ë¢®¤ ⥪áâ |
126 | shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
110 | shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
127 | mov bx,word op_top ;çàãðóçèì çíà÷åíèå ïî y |
111 | mov bx,word op_top ;§ £à㧨¬ § 票¥ ¯® y |
128 | add ebx,op_size |
112 | add ebx,op_size |
129 | mov ecx,dword op_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
113 | mov ecx,dword op_text_color ;§ £à㧨¬ 梥⠤¯¨á¨ + flags |
130 | sub ebx,7 ;äîáàâèì çíà÷åíèå äëèíû ñòîðîíû -9+2 |
114 | sub ebx,7 ;¤®¡ ¢¨¬ § 票¥ ¤«¨ë áâ®à®ë -9+2 |
131 | 115 | ||
Line 132... | Line 116... | ||
132 | mov edx,dword op_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
116 | mov edx,dword op_text_ptr ;㪠¦¥¬ ¤à¥á ®â ªã¤ 㦮 ¢ë¢®¤¨âì áâபã |
133 | mov esi,dword op_text_length |
117 | mov esi,dword op_text_length |
134 | ;âíåñåì â eax çíà÷åíèå âûâîäà íàäïèñè íà êàíâó |
118 | ;¢¥á¥¬ ¢ eax § 票¥ ¢ë¢®¤ ¤¯¨á¨ ª ¢ã |
Line 135... | Line 119... | ||
135 | mov eax,4 |
119 | mov eax,4 |
136 | mcall ;Âûâîä |
120 | mcall ;뢮¤ |
137 | popa ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
121 | popa ;¢®ááâ ®¢¨âì § 票ï ॣ¨áâ஢ ¨§ á⥪ |
138 | ret ;âûéäåì èç ïðîöåäóðû |
122 | ret ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë |
139 | 123 | ||
140 | option_box_clear_op: ;î÷èñòêà ÷åê áîêñà |
124 | option_box_clear_op: ;®ç¨á⪠祪 ¡®ªá |
141 | mov edx,dword op_color ;öâåò âíóòðè ÷åê áîêñà |
125 | mov edx,dword op_color ;梥⠢ãâਠ祪 ¡®ªá |
142 | jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
126 | jmp @f ;¡¥§ãá«®¢ë© ¯à릮ª ¨¦îî ¬¥âªã @@ |
Line 143... | Line 127... | ||
143 | 127 | ||
144 | 128 | ||
145 | option_box_draw_op: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
129 | option_box_draw_op: ; à¨á®¢ âì ¢ª«îç¥ë© 祪 ¡®ªá |
146 | mov edx,dword op_border_color ;çàãðóçèòü öâåò |
130 | mov edx,dword op_border_color ;§ £à㧨âì 梥â |
147 | @@: |
131 | @@: |
148 | movzx ebx,word op_left ;çàãðóçèòü êîîðäèíàòó ïî õ |
132 | movzx ebx,word op_left ;§ £à㧨âì ª®®à¤¨ âã ¯® å |
149 | mov eax,dword op_size |
133 | mov eax,dword op_size |
Line 150... | Line 134... | ||
150 | mov bp,ax |
134 | mov bp,ax |
151 | shr eax,2 |
135 | shr eax,2 |
152 | push ax |
136 | push ax |
153 | 137 | ||
154 | push ax |
138 | push ax |
155 | add ebx,eax |
139 | add ebx,eax |
156 | shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
140 | shl ebx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
157 | pop ax |
141 | pop ax |
158 | lea eax,[eax*2] |
142 | lea eax,[eax*2] |
Line 159... | Line 143... | ||
159 | sub bp,ax ;ñîõðàíèì ðåãèñòð bx â ðåãèñòðå óêàçàòåëÿ áàçû |
143 | sub bp,ax ;á®åà ¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë |
160 | mov bx,bp |
144 | mov bx,bp |
161 | 145 | ||
162 | movzx ecx,word op_top ;çàãðóçèòü êîîðäèíàòó ïî ó |
146 | movzx ecx,word op_top ;§ £à㧨âì ª®®à¤¨ âã ¯® ã |
163 | pop ax |
147 | pop ax |
164 | add cx,ax |
148 | add cx,ax |
165 | shl ecx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
149 | shl ecx,16 ;ᤢ¨¥¬ 16 à §à冷¢ ¢ «¥¢® (㬮¦¨¬ 65536) |
166 | mov cx,bp ;çàãðóçèì çíà÷åíèÿ ðåãèñòðà óêàçàòåëÿ áàçû â cx |
150 | mov cx,bp ;§ £à㧨¬ § 票ï ॣ¨áâà 㪠§ â¥«ï ¡ §ë ¢ cx |
167 | mov eax,13 ;â eax - çíà÷åíèÿ ôóíêöèè äëÿ âûâîäà ïîëîñû ò.å. ïî ñóòè ïðÿìîóãîëüíèêà, êîòîðûé îòîáðàæàåò âêëþ÷åííûé êîìïîíåíò ÷åê áîêñ |
151 | mov eax,13 ;¢ eax - § 票ï äãªæ¨¨ ¤«ï ¢ë¢®¤ ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«îç¥ë© ª®¬¯®¥â 祪 ¡®ªá |
168 | mcall ;âûâîä |
152 | mcall ;¢ë¢®¤ |
169 | ret ;âûéòè èç ïðîöåäóðû |
153 | ret ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë |
170 | } |
154 | } |
171 | 155 | ||
172 | 156 | ||
Line 173... | Line 157... | ||
173 | macro use_optionbox_mouse |
157 | macro use_optionbox_mouse |
174 | { |
158 | { |
175 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
159 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
176 | ;Îáðàáîò÷èê mouse |
160 | ;¡à ¡®â稪 mouse |
177 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
161 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
178 | option_box_mouse_op: ;îáðàáîòêà ìûøè |
162 | option_box_mouse_op: ;®¡à ¡®âª ¬ëè¨ |
179 | pusha |
163 | pusha |
180 | mov esi,dword op_text_length ;çàãðóçèòü êîë-âî ñèìâîëîâ â òåêñòîâîé ñòðîêå |
164 | mov esi,dword op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥ |
181 | ;Óìíîæåíèå íà 6 Áûñòðîå óìíîæåíèå ìîæíî âîñïîëüçîâàòüñÿ ëþáûì ìç ìåòîäîâ, íî íà ñòàðûõ Ïðîöåññîðàõ (386,486,P1)áûñòðåå áóäåò ñ èíñòðóêöèåé Lea |
165 | ;¬®¦¥¨¥ 6 ëáâ஥ 㬮¦¥¨¥ ¬®¦® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ® áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨áâàãªæ¨¥© Lea |
182 | ; lea esi,[eax*2+eax] |
166 | ; lea esi,[eax*2+eax] |
183 | ; shl eax,1 |
167 | ; shl eax,1 |
184 | imul esi,6 ; èëè ìîæíî è òàê óìíîæèòü íà 6 |
168 | imul esi,6 ; ¨«¨ ¬®¦® ¨ â ª 㬮¦¨âì 6 |
185 | xor ebx,ebx |
169 | xor ebx,ebx |
186 | add esi,dword op_text_margin ;äîáàâèòü 3 - ðàññòîÿíèå îò ÷åê áîêñà äî íàäïèñè |
170 | add esi,dword op_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï¨¥ ®â 祪 ¡®ªá ¤® ¤¯¨á¨ |
187 | 171 | ||
188 | mov eax,37 ;ïîëó÷èì êîîðäèíàòû ìûøêè |
172 | mov eax,37 ;¯®«ã稬 ª®®à¤¨ âë ¬ë誨 |
189 | inc ebx ;äîáàâèòü 1 |
173 | inc ebx ;¤®¡ ¢¨âì 1 |
190 | mcall ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
174 | mcall ;¯®«ãç¨âì ª®®à¤¨ âë ªãàá®à ®â®á¨â¥«ì® ®ª |
191 | 175 | ||
192 | movzx ebx,word op_top ;çàãðóçèòü â bx çíà÷åíèå êîîðäèíàòû ó |
176 | movzx ebx,word op_top ;§ £à㧨âì ¢ bx § 票¥ ª®®à¤¨ âë ã |
193 | cmp ax,bx ;ñðàâíèòü ñ ñ êîîðäèíàòîé êóðñîðà |
177 | cmp ax,bx ;áà ¢¨âì á á ª®®à¤¨ ⮩ ªãàá®à |
Line 194... | Line 178... | ||
194 | jl option_box_mouse_end ;SF <> OF åñëè ìåíüøå |
178 | jl option_box_mouse_end ;SF <> OF ¥á«¨ ¬¥ìè¥ |
195 | add ebx,dword op_size ;äîáàâèòü ðàçìåð |
179 | add ebx,dword op_size ;¤®¡ ¢¨âì à §¬¥à |
196 | cmp ax,bx ;ñðàâíèòü |
180 | cmp ax,bx ;áà ¢¨âì |
Line 197... | Line 181... | ||
197 | jg option_box_mouse_end ;ZF = 0 è SF = OF åñëè áîëüøå |
181 | jg option_box_mouse_end ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥ |
198 | 182 |