Subversion Repositories Kolibri OS

Rev

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  Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
1
;ä ©« ᮧ¤ ­ 13.02.2009    ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
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