Subversion Repositories Kolibri OS

Rev

Rev 648 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
648 andrew_pro 1
 
2
3
 
4
;****************craete CheckBox**********************
5
;****************************************************
6
;IN
7
;pointer to parend
8
;pointer to CheckBox's structure
9
;OUT
10
;pointer to initialized control
11
align 4
12
13
 
14
15
 
16
      mov eax,[esp+8]
17
18
 
19
20
 
21
      call craete_control
22
23
 
24
      mov [eax],dword check_box
25
26
 
27
      mov esi,[PointerToStructureForCheckBox]
28
      mov edi,eax
29
      add edi,control_header_size
30
      rep movsb
31
32
 
33
34
 
35
      xor ecx,ecx
36
      xor edx,edx
37
      mov cx,[ebx+2]   ;CheckBox x
38
      mov dx,[ebx+4]   ;CheckBox y
39
      mov esi,[ebx+10] ;CheckBox size
40
      add ecx,border_width
41
      add edx,[skin_height]
42
      ;copy information to control
43
      mov [eax+24],ecx
44
      mov [eax+28],edx
45
      mov [eax+32],esi
46
      mov [eax+36],esi
47
48
 
49
50
 
51
;*****************Draw CheckBox**********************
52
;****************************************************
53
;IN
54
;pointer to control of CheckBox
55
;message
56
;OUT
57
;not returned value
58
align 4
59
60
 
61
62
 
63
      mov eax,[esp+8]
64
65
 
66
      mov esi,[esp+4]
67
      mov [PointerForCheckBox],esi
68
69
 
70
      add esi,control_header_size
71
      mov edi,dword CheckBox
72
      mov ecx,control_header_size+cb_control_data_dize
73
      rep movsb
74
75
 
76
      ;load coordinats and size from control
77
      mov eax,[PointerForCheckBox]
78
      mov ebx,[eax+24]           ;x
79
      mov ecx,[eax+28]           ;y
80
      mov edx,[eax+32]           ;size
81
      ;set current coordinats and sizes in CheckBox
82
      mov [CheckBox.ch_left],bx
83
      mov [CheckBox.ch_top],cx
84
      mov [CheckBox.ch_size],edx
85
      pop eax
86
87
 
88
      jne no_redraw_all_check_box
89
90
 
91
       mov bx,[CheckBox.ch_left]
92
       mov cx,[CheckBox.ch_top]
93
       shl ebx,16
94
       shl ecx,16
95
       add ebx,[CheckBox.ch_size]
96
       add ecx,[CheckBox.ch_size]
97
       mov edx,[CheckBox.ch_border_color]
98
        mcall
99
100
 
101
       add ebx,1 shl 16 - 2
102
       add ecx,1 shl 16 - 2
103
        mcall
104
105
 
106
       mov ebx,eax
107
       mov ecx,3
108
       shr ebx,1
109
       cdq
110
       idiv ecx
111
       mov [CheckBox.ch_size_2],bx
112
       mov [CheckBox.ch_size_3],ax
113
114
 
115
       jz   @f
116
       call draw_ch
117
    @@:
118
119
 
120
        add ebx,[CheckBox.ch_size]
121
        add ebx,[CheckBox.ch_text_margin]
122
        shl   ebx,16
123
        mov   bx,[CheckBox.ch_top]
124
        add   ebx,[CheckBox.ch_size]
125
        add   ebx,(-9+1)
126
        mov   ecx,[CheckBox.ch_text_color]
127
128
 
129
        movzx esi,word [CheckBox.ch_text_length]
130
131
 
132
        mcall
133
134
 
135
      no_redraw_all_check_box:
136
137
 
138
 
675 andrew_pro 139
      je exit_check_box
140
141
 
648 andrew_pro 142
      jne no_mouse_check_box
143
144
 
145
      mov edi,[eax+8]
146
      mov ebx,[eax+12]   ;buttons of mouse state
147
      mov [CheckBox.mouseX],esi
148
      mov [CheckBox.mouseY],edi
149
      mov eax,ebx
150
151
 
152
      jnz  @f
153
      btr  word [CheckBox.ch_flags],2
154
      jmp exit_check_box
155
@@:
156
      bts  word [CheckBox.ch_flags],2
157
      jc   .mouse_end
158
      movzx  esi,word [CheckBox.ch_text_length]
159
160
 
161
      add  esi,[CheckBox.ch_text_margin]
162
163
 
164
      shl eax,16
165
      add eax,[CheckBox.mouseY]
166
167
 
168
169
 
170
      cmp   ax,bx
171
      jl   .mouse_end
172
      add   ebx,[CheckBox.ch_size]
173
      cmp   ax,bx
174
      jg   .mouse_end
175
176
 
177
      movzx ebx,word[CheckBox.ch_left]
178
      cmp   ax,bx
179
      jl   .mouse_end
180
      add   ebx,[CheckBox.ch_size]
181
      add   ebx,esi
182
      cmp   ax,bx
183
      jg   .mouse_end
184
185
 
186
      jc   @f
187
188
 
189
190
 
191
@@:
192
      btr   word[CheckBox.ch_flags],1
193
      call clear_ch
194
195
 
196
197
 
198
199
 
200
201
 
202
      mov ecx,cb_control_data_dize           ;save in control only flags
203
      mov esi,dword CheckBox
204
      mov edi,[PointerForCheckBox]
205
      add edi,control_header_size
206
      cld
207
      rep movsb
208
209
 
210
211
 
212
;ch_size=11
213
214
 
215
        mov   edx,[CheckBox.ch_color]
216
        jmp   @f
217
218
 
219
        mov   edx,[CheckBox.ch_border_color]
220
@@:
221
222
 
223
        add   bx,[CheckBox.ch_size_3]
224
        shl   ebx,16
225
        mov   bx,[CheckBox.ch_size_2]
226
        ;mov   bp,bx
227
        ;push        bx
228
        movzx ecx,word [CheckBox.ch_top]
229
        mov   eax,13
230
        add   cx,[CheckBox.ch_size_3]
231
        shl   ecx,16
232
        ;mov   cx,bp
233
        mov cx,[CheckBox.ch_size_2]
234
        mcall
235
236
 
237