Subversion Repositories Kolibri OS

Rev

Rev 1476 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1476 Rev 2249
1
;ä ©« ᮧ¤ ­ 13.02.2009    ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
1
;ä ©« ᮧ¤ ­ 13.02.2009    ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
2
;Œ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
2
;Œ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
3
;Optionbox
3
;Optionbox
4
 
4
 
5
macro use_optionbox_driver	;¬ ªà®áë ª®â®àë¥ ã¯à ¢«ïîâ à ¡®â®© ¡®ªá  )
5
macro use_optionbox_driver	;¬ ªà®áë ª®â®àë¥ ã¯à ¢«ïîâ à ¡®â®© ¡®ªá  )
6
{
6
{
7
option_box_draw:
7
option_box_draw:
8
        pusha
8
        pusha
9
 
9
 
10
        mov     eax,dword [esp+36]
10
        mov     eax,dword [esp+36]
11
@@:     mov     edi,dword [eax]
11
@@:     mov     edi,dword [eax]
12
        test    edi,edi
12
        test    edi,edi
13
        je      option_check
13
        je      option_check
14
        call    option_box_draw_box
14
        call    option_box_draw_box
15
        add     eax,4
15
        add     eax,4
16
        jmp    @b 
16
        jmp    @b 
17
 
17
 
18
option_check:
18
option_check:
19
        mov     eax,dword [esp+36]
19
        mov     eax,dword [esp+36]
20
@@:     mov     edi,dword [eax]
20
@@:     mov     edi,dword [eax]
21
        test    edi,edi
21
        test    edi,edi
22
        je      @f
22
        je      @f
23
        
23
        
24
        mov     ebx,dword [edi]
24
        mov     ebx,dword [edi]
25
        mov     ebx,dword [ebx]
25
        mov     ebx,dword [ebx]
26
        cmp     edi,ebx
26
        cmp     edi,ebx
27
        jne     .clear_op
27
        jne     .clear_op
28
        
28
        
29
        pusha
29
        pusha
30
        call    option_box_draw_op
30
        call    option_box_draw_op
31
        popa
31
        popa
32
        add     eax,4
32
        add     eax,4
33
        jmp     @b
33
        jmp     @b
34
 
34
 
35
.clear_op:
35
.clear_op:
36
        pusha
36
        pusha
37
        call    option_box_clear_op
37
        call    option_box_clear_op
38
        popa
38
        popa
39
        add     eax,4
39
        add     eax,4
40
        jmp     @b
40
        jmp     @b
41
 
41
 
42
 
42
 
43
@@:     popa
43
@@:     popa
44
        ret 4 
44
        ret 4 
45
        ; exit ¢®®¡é¥ :)
45
        ; exit ¢®®¡é¥ :)
46
 
46
 
47
 
47
 
48
option_box_mouse:
48
option_box_mouse:
49
        pusha
49
        pusha
50
	mcall	37,2
50
	mcall	37,2
51
	test    eax,eax
51
	test    eax,eax
52
	jnz	@f
52
	jnz	@f
53
	popa
53
	popa
54
        ret 4
54
        ret 4
55
@@:
55
@@:
56
        mov     eax,dword [esp+36]
56
        mov     eax,dword [esp+36]
57
@@:     mov     edi,dword [eax]
57
@@:     mov     edi,dword [eax]
58
        test    edi,edi
58
        test    edi,edi
59
        je      option_check
59
        je      option_check
60
        call    option_box_mouse_op
60
        call    option_box_mouse_op
61
        add     eax,4
61
        add     eax,4
62
        jmp    @b 
62
        jmp    @b 
63
 
63
 
64
}
64
}
65
macro use_optionbox_draw
65
macro use_optionbox_draw
66
{
66
{
67
option_box_draw_box:
67
option_box_draw_box:
68
        pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
68
        pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
69
 
69
 
70
        movzx ebx,word op_left 
70
        movzx ebx,word op_left 
71
        shl ebx,16 
71
        shl ebx,16 
72
        add ebx,dword op_size 
72
        add ebx,dword op_size 
73
        movzx ecx,word op_top 
73
        movzx ecx,word op_top 
74
        shl ecx,16 
74
        shl ecx,16 
75
        add ecx,dword op_size 
75
        add ecx,dword op_size 
76
        mov edx,dword op_border_color 
76
        mov edx,dword op_border_color 
77
        mov eax,13 
77
        mov eax,13 
78
        mcall ;à¨á㥬 à ¬ªã 
78
        mcall ;à¨á㥬 à ¬ªã 
79
  
79
  
80
        mov edx,dword op_color 
80
        mov edx,dword op_color 
81
        add ebx,1 shl 16 - 2 
81
        add ebx,1 shl 16 - 2 
82
        add ecx,1 shl 16 - 2 
82
        add ecx,1 shl 16 - 2 
83
        mcall ;§ ªà è¨¢ ¥¬ ¢­ãâ७­®á⨠祪¡®ªá  
83
        mcall ;§ ªà è¨¢ ¥¬ ¢­ãâ७­®á⨠祪¡®ªá  
84
 
84
 
85
;        mov     eax,dword option_group
85
;        mov     eax,dword option_group
86
;        mov     dword eax,[eax]
86
;        mov     dword eax,[eax]
87
;        cmp     eax,edi
87
;        cmp     eax,edi
88
;        jne     @f
88
;        jne     @f
89
;        call    option_box_draw_op  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
89
;        call    option_box_draw_op  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
90
 
90
 
91
 
91
 
92
;----------------------------
92
;----------------------------
93
;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
93
;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
94
;----------------------------
94
;----------------------------
95
@@:     movzx ebx,word op_left        ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
95
@@:     movzx ebx,word op_left        ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
96
        add   ebx,dword op_size
96
        add   ebx,dword op_size
97
        add   ebx,dword op_text_margin;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
97
        add   ebx,dword op_text_margin;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
98
        shl   ebx,16                ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
98
        shl   ebx,16                ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
99
        mov   bx,word op_top        ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
99
        mov   bx,word op_top        ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
100
        add   ebx,op_size
100
        mov   eax,op_size
-
 
101
        shr   eax,1
-
 
102
        add   eax,4
-
 
103
        add   ebx,eax
101
        mov   ecx,dword op_text_color        ;§ £à㧨¬ 梥⠭ ¤¯¨á¨ + flags
104
        mov   ecx,dword op_text_color        ;§ £à㧨¬ 梥⠭ ¤¯¨á¨ + flags
102
        sub   ebx,7        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
105
        sub   ebx,7        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
103
        
106
        
104
        mov   edx,dword op_text_ptr                ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
107
        mov   edx,dword op_text_ptr                ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
105
        mov   esi,dword op_text_length
108
        mov   esi,dword op_text_length
106
        ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
109
        ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
107
        mov   eax,4
110
        mov   eax,4
108
        mcall                  ;‚뢮¤ 
111
        mcall                  ;‚뢮¤ 
109
popa                           ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
112
popa                           ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
110
ret                            ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
113
ret                            ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
111
 
114
 
112
option_box_clear_op:                      ;®ç¨á⪠ 祪 ¡®ªá 
115
option_box_clear_op:                      ;®ç¨á⪠ 祪 ¡®ªá 
113
        mov     edx,dword op_color    ;梥⠢­ãâਠ祪 ¡®ªá 
116
        mov     edx,dword op_color    ;梥⠢­ãâਠ祪 ¡®ªá 
114
        jmp     @f              ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
117
        jmp     @f              ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
115
 
118
 
116
 
119
 
117
option_box_draw_op:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
120
option_box_draw_op:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
118
        mov   edx,dword op_border_color        ;§ £à㧨âì 梥â
121
        mov   edx,dword op_border_color        ;§ £à㧨âì 梥â
119
@@:
122
@@:
120
        movzx ebx,word op_left  ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
123
        movzx ebx,word op_left  ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
121
        mov   eax,dword op_size
124
        mov   eax,dword op_size
122
        mov   bp,ax
125
        mov   bp,ax
123
        shr   eax,2
126
        shr   eax,2
124
        push  ax
127
        push  ax
125
 
128
 
126
        push  ax
129
        push  ax
127
        add   ebx,eax           
130
        add   ebx,eax           
128
        shl   ebx,16            ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
131
        shl   ebx,16            ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
129
        pop   ax
132
        pop   ax
130
        lea   eax,[eax*2]
133
        lea   eax,[eax*2]
131
        sub   bp,ax             ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
134
        sub   bp,ax             ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
132
        mov   bx,bp
135
        mov   bx,bp
133
 
136
 
134
        movzx ecx,word op_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
137
        movzx ecx,word op_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
135
        pop   ax
138
        pop   ax
136
        add   cx,ax         
139
        add   cx,ax         
137
        shl   ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
140
        shl   ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
138
        mov   cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
141
        mov   cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
139
        mov   eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
142
        mov   eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
140
        mcall            ;¢ë¢®¤
143
        mcall            ;¢ë¢®¤
141
ret                                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
144
ret                                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
142
}
145
}
143
 
146
 
144
 
147
 
145
macro use_optionbox_mouse
148
macro use_optionbox_mouse
146
{
149
{
147
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
150
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
148
;Ž¡à ¡®â稪 mouse
151
;Ž¡à ¡®â稪 mouse
149
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
152
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
150
option_box_mouse_op:                 ;®¡à ¡®âª  ¬ëè¨ 
153
option_box_mouse_op:                 ;®¡à ¡®âª  ¬ëè¨ 
151
pusha
154
pusha
152
        mov     esi,dword op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
155
        mov     esi,dword op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
153
        ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
156
        ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
154
;        lea    esi,[eax*2+eax]
157
;        lea    esi,[eax*2+eax]
155
;        shl    eax,1
158
;        shl    eax,1
156
        imul    esi,6               ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
159
        imul    esi,6               ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
157
        xor     ebx,ebx
160
        xor     ebx,ebx
158
        add     esi,dword op_text_margin   ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
161
        add     esi,dword op_text_margin   ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
159
        
162
        
160
        mov     eax,37          ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨 
163
        mov     eax,37          ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨 
161
        inc     ebx             ;¤®¡ ¢¨âì 1
164
        inc     ebx             ;¤®¡ ¢¨âì 1
162
        mcall                ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­  
165
        mcall                ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­  
163
 
166
 
164
        movzx   ebx,word op_top           ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
167
        movzx   ebx,word op_top           ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
165
        cmp     ax,bx               ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
168
        cmp     ax,bx               ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
166
        jl      option_box_mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥ 
169
        jl      option_box_mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥ 
167
        add     ebx,dword op_size          ;¤®¡ ¢¨âì à §¬¥à 
170
        add     ebx,dword op_size          ;¤®¡ ¢¨âì à §¬¥à 
168
        cmp     ax,bx               ;áà ¢­¨âì
171
        cmp     ax,bx               ;áà ¢­¨âì
169
        jg      option_box_mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥ 
172
        jg      option_box_mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥ 
170
        
173
        
171
        shr     eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
174
        shr     eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
172
        movzx   ebx,word op_left          ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
175
        movzx   ebx,word op_left          ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
173
        cmp     ax,bx                ;áà ¢­¨âì ॣ¨áâàë
176
        cmp     ax,bx                ;áà ¢­¨âì ॣ¨áâàë
174
        jl      option_box_mouse_end           ;¥á«¨ ¬¥­ìè¥
177
        jl      option_box_mouse_end           ;¥á«¨ ¬¥­ìè¥
175
        add     ebx,dword op_size          ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
178
        add     ebx,dword op_size          ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
176
        add     ebx,esi              ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
179
        add     ebx,esi              ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
177
        cmp     ax,bx                ;áâà ¢­¨âì ॣ¨áâàë
180
        cmp     ax,bx                ;áâà ¢­¨âì ॣ¨áâàë
178
        jg      option_box_mouse_end           ;¥á«¨ ¡®«ìè¥ 
181
        jg      option_box_mouse_end           ;¥á«¨ ¡®«ìè¥ 
179
        mov     eax,dword option_group
182
        mov     eax,dword option_group
180
        mov     [eax],edi
183
        mov     [eax],edi
181
 
184
 
182
option_box_mouse_end:
185
option_box_mouse_end:
183
popa                              ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
186
popa                              ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
184
ret                               ;¢ë©â¨
187
ret                               ;¢ë©â¨
185
 
188
 
186
}
189
}