Subversion Repositories Kolibri OS

Rev

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

Rev 1951 Rev 2116
1
;;****************************************************************************
1
;;****************************************************************************
2
;****************************************************************************
2
;****************************************************************************
3
; Draw output part of the image and SCROLLBAR's
3
; Draw output part of the image and SCROLLBAR's
4
;****************************************************************************
4
;****************************************************************************
5
;****************************************************************************
5
;****************************************************************************
6
  drawimage:
6
  drawimage:
7
 
7
 
8
  
8
  
9
    call get_window_param
9
    call get_window_param
10
    ;mov  edx,5*65536+50
10
    ;mov  edx,5*65536+50
11
	mov  edx,0*65536+28
11
	mov  edx,0*65536+28
12
    mov  esi,[img_resolution]    ;24
12
    mov  esi,[img_resolution]    ;24
13
    cmp  esi,32
13
    cmp  esi,32
14
    ja   .exit_error ;.exit
14
    ja   .exit_error ;.exit
15
    mov  edi,[img_palette]
15
    mov  edi,[img_palette]
16
;****************************************************************************
16
;****************************************************************************
17
; Calculation of sizes of an output part of the image
17
; Calculation of sizes of an output part of the image
18
;****************************************************************************
18
;****************************************************************************
19
    xor  eax,eax
19
    xor  eax,eax
20
    mov  [draw_SB],al
20
    mov  [draw_SB],al
21
    mov  [draw_SB1],al
21
    mov  [draw_SB1],al
22
    mov  eax,[window_width] 
22
    mov  eax,[window_width] 
23
;    sub  eax,9
23
;    sub  eax,9
24
    mov  [wa_width],ax
24
    mov  [wa_width],ax
25
    mov  [wa_width_1],ax
25
    mov  [wa_width_1],ax
26
    mov  [wa_width_2],ax
26
    mov  [wa_width_2],ax
27
    mov  ebx,[img_width]
27
    mov  ebx,[img_width]
28
    test ebx,ebx
28
    test ebx,ebx
29
    jz   .exit_error ;.exit
29
    jz   .exit_error ;.exit
30
    cmp  ax,bx
30
    cmp  ax,bx
31
    jae   @f
31
    jae   @f
32
	sub   ax,[scroll_bar_data_vertical.size_x]
32
	sub   ax,[scroll_bar_data_vertical.size_x]
33
    mov  [draw_SB],1
33
    mov  [draw_SB],1
34
    jmp  .size_y
34
    jmp  .size_y
35
@@:
35
@@:
36
    mov  ax,bx
36
    mov  ax,bx
37
 
37
 
38
    
38
    
39
.size_y:
39
.size_y:
40
    mov  ebx,[img_high]
40
    mov  ebx,[img_high]
41
    test ebx,ebx
41
    test ebx,ebx
42
    jz   .exit_error ;.exit
42
    jz   .exit_error ;.exit
43
    shl  eax,16
43
    shl  eax,16
44
    add  eax,[window_high]
44
    add  eax,[window_high]
45
    cmp  ax,50-22
45
;    cmp  ax,28
46
    jbe  @f
46
;    jbe  @f
47
    sub  ax,50-22
47
    sub  ax,28
48
@@:
48
;@@:
49
    mov [wa_high],ax
49
    mov [wa_high],ax
50
    mov [wa_high_1],ax
50
    mov [wa_high_1],ax
51
    mov [wa_high_2],ax
51
    mov [wa_high_2],ax
52
    cmp  ax,bx
52
    cmp  ax,bx
53
    jae   @f
53
    jae   @f
54
	sub   ax,[scroll_bar_data_horizontal.size_y]
54
	sub   ax,[scroll_bar_data_horizontal.size_y]
55
    mov  [draw_SB1],1
55
    mov  [draw_SB1],1
56
    jmp  .continue
56
    jmp  .continue
57
@@: 
57
@@: 
58
    mov  ax,bx
58
    mov  ax,bx
59
.continue:
59
.continue:
60
    mov  ecx,eax
60
    mov  ecx,eax
61
;****************************************************************************
61
;****************************************************************************
62
;
62
;
63
;****************************************************************************
63
;****************************************************************************
64
    cmp  [draw_SB1],1
64
    cmp  [draw_SB1],1
65
    je   @f
65
    je   @f
66
    cmp  [draw_SB],0
66
    cmp  [draw_SB],0
67
    je   @f
67
    je   @f
68
	ror  ecx,16
68
	ror  ecx,16
69
	add  cx,[scroll_bar_data_vertical.size_x]
69
	add  cx,[scroll_bar_data_vertical.size_x]
70
	rol  ecx,16
70
	rol  ecx,16
71
@@:    
71
@@:    
72
    cmp  [draw_SB],1
72
    cmp  [draw_SB],1
73
    je  @f
73
    je  @f
74
    cmp  [draw_SB1],0
74
    cmp  [draw_SB1],0
75
    je  @f
75
    je  @f
76
	add  cx,[scroll_bar_data_horizontal.size_y]
76
	add  cx,[scroll_bar_data_horizontal.size_y]
77
@@:
77
@@:
78
;    call  check_8bit_less
78
;    call  check_8bit_less
79
;.continue_1:
79
;.continue_1:
80
;****************************************************************************
80
;****************************************************************************
81
; Prepare of data for SCROLLBAR's
81
; Prepare of data for SCROLLBAR's
82
;****************************************************************************
82
;****************************************************************************
83
    call correct_cur_area
83
    call correct_cur_area
84
    
84
    
85
    mov  eax,[img_width]
85
    mov  eax,[img_width]
86
	push edx
86
	push edx
87
	imul eax,[scaling_mode]
87
	imul eax,[scaling_mode]
88
	mov  ebx,100
88
	mov  ebx,100
89
	xor  edx,edx
89
	xor  edx,edx
90
	div  ebx
90
	div  ebx
91
    mov  [scroll_bar_data_horizontal.max_area],eax
91
    mov  [scroll_bar_data_horizontal.max_area],eax
92
	pop  edx
92
	pop  edx
93
 
93
 
94
	
94
	
95
    mov  ebx,[img_high]
95
    mov  ebx,[img_high]
96
	push eax edx
96
	push eax edx
97
	mov  eax,ebx
97
	mov  eax,ebx
98
	imul eax,[scaling_mode]
98
	imul eax,[scaling_mode]
99
	mov  ebx,100
99
	mov  ebx,100
100
	xor  edx,edx
100
	xor  edx,edx
101
	div  ebx
101
	div  ebx
102
	mov  ebx,eax
102
	mov  ebx,eax
103
	pop  edx eax
103
	pop  edx eax
104
    mov  [scroll_bar_data_vertical.max_area],ebx
104
    mov  [scroll_bar_data_vertical.max_area],ebx
105
	
105
	
106
;	cmp [scaling_mode],100
106
;	cmp [scaling_mode],100
107
;	jne  .continue_1
107
;	jne  .continue_1
108
 
108
 
109
    call correct_width
109
    call correct_width
110
    call correct_cur_area
110
    call correct_cur_area
111
    
111
    
112
    cmp [correct_w],0
112
    cmp [correct_w],0
113
    je  @f
113
    je  @f
114
        
114
        
115
    call correct_high
115
    call correct_high
116
    call correct_cur_area
116
    call correct_cur_area
117
    jmp  .continue_1
117
    jmp  .continue_1
118
    
118
    
119
@@:
119
@@:
120
    call correct_high
120
    call correct_high
121
    call correct_cur_area
121
    call correct_cur_area
122
    
122
    
123
    cmp [correct_h],0
123
    cmp [correct_h],0
124
    je  @f
124
    je  @f
125
    
125
    
126
    call correct_width
126
    call correct_width
127
    call correct_cur_area
127
    call correct_cur_area
128
@@:
128
@@:
129
 
129
 
130
;    call  check_8bit_less
130
;    call  check_8bit_less
131
 
131
 
132
.continue_1:
132
.continue_1:
133
;	mov  eax,[window_high]
133
;	mov  eax,[window_high]
134
;	sub  eax,55
134
;	sub  eax,55
135
;	ror  eax,16
135
;	ror  eax,16
136
;	mov  ax,dx
136
;	mov  ax,dx
137
;	rol  eax,16
137
;	rol  eax,16
138
    mov  eax,edx
138
    mov  eax,edx
139
    shl  eax,16
139
    shl  eax,16
140
    mov  ax,cx
140
    mov  ax,cx
141
    mov  [scroll_bar_data_vertical.y],eax
141
    mov  [scroll_bar_data_vertical.y],eax
142
 
142
 
143
;	mov  eax,[window_width]
143
;	mov  eax,[window_width]
144
;	sub  eax,10
144
;	sub  eax,10
145
;	ror  eax,16
145
;	ror  eax,16
146
;	ror  edx,16
146
;	ror  edx,16
147
;	mov  ax,dx
147
;	mov  ax,dx
148
;	rol  edx,16
148
;	rol  edx,16
149
;	rol  eax,16
149
;	rol  eax,16
150
    mov  eax,edx
150
    mov  eax,edx
151
    mov  ebx,ecx
151
    mov  ebx,ecx
152
    shr  ebx,16
152
    shr  ebx,16
153
    mov  ax,bx
153
    mov  ax,bx
154
    mov  [scroll_bar_data_horizontal.x],eax
154
    mov  [scroll_bar_data_horizontal.x],eax
155
    
155
    
156
    
156
    
157
;    mov  eax,edx
157
;    mov  eax,edx
158
;    mov  ebx,ecx
158
;    mov  ebx,ecx
159
;    shr  ebx,16
159
;    shr  ebx,16
160
;    shr  eax,16
160
;    shr  eax,16
161
;    add  ax,bx
161
;    add  ax,bx
162
	mov  eax,[window_width]
162
	mov  eax,[window_width]
163
	sub  ax,[scroll_bar_data_vertical.size_x]
163
	sub  ax,[scroll_bar_data_vertical.size_x]
164
;	sub  ax,4
164
;	sub  ax,4
165
	mov  [scroll_bar_data_vertical.start_x],ax
165
	mov  [scroll_bar_data_vertical.start_x],ax
166
 
166
 
167
;    mov  eax,edx
167
;    mov  eax,edx
168
;    add  ax,cx
168
;    add  ax,cx
169
	mov  eax,[window_high]
169
	mov  eax,[window_high]
170
	sub  ax,[scroll_bar_data_horizontal.size_y]
170
	sub  ax,[scroll_bar_data_horizontal.size_y]
171
;	sub  ax,4
171
;	sub  ax,4
172
    mov  [scroll_bar_data_horizontal.start_y],ax
172
    mov  [scroll_bar_data_horizontal.start_y],ax
173
	
173
	
174
;****************************************************************************
174
;****************************************************************************
175
; Check necessity prepare of data
175
; Check necessity prepare of data
176
;****************************************************************************
176
;****************************************************************************
177
    mov   eax,[scroll_bar_data_horizontal.max_area]
177
    mov   eax,[scroll_bar_data_horizontal.max_area]
178
    mov   ebx,[scroll_bar_data_vertical.max_area]
178
    mov   ebx,[scroll_bar_data_vertical.max_area]
179
    cmp   ebx,[scroll_bar_data_vertical.cur_area]
179
    cmp   ebx,[scroll_bar_data_vertical.cur_area]
180
    ja    @f
180
    ja    @f
181
    cmp   eax,[scroll_bar_data_horizontal.cur_area]
181
    cmp   eax,[scroll_bar_data_horizontal.cur_area]
182
    ja    @f
182
    ja    @f
183
    
183
    
184
    mov  ebp,0
184
    mov  ebp,0
185
    mov  ebx,[soi]
185
    mov  ebx,[soi]
186
    jmp  .end
186
    jmp  .end
187
@@:
187
@@:
188
;****************************************************************************
188
;****************************************************************************
189
; Calculate offset of next row data relative to previous row data
189
; Calculate offset of next row data relative to previous row data
190
;****************************************************************************
190
;****************************************************************************
191
    mov  ebp,eax
191
    mov  ebp,eax
192
    mov  ebx,ecx
192
    mov  ebx,ecx
193
    shr  ebx,16
193
    shr  ebx,16
194
    sub  ebp,ebx
194
    sub  ebp,ebx
195
    imul ebp,esi
195
    imul ebp,esi
196
    mov  eax,ebp
196
    mov  eax,ebp
197
    shr  ebp,3
197
    shr  ebp,3
198
;****************************************************************************
198
;****************************************************************************
199
; Vertical SCROLLBAR
199
; Vertical SCROLLBAR
200
; At a case of resizing of the window
200
; At a case of resizing of the window
201
; Check the position of a runner has crossed a limit
201
; Check the position of a runner has crossed a limit
202
;****************************************************************************
202
;****************************************************************************
203
    mov  eax,[scroll_bar_data_vertical.max_area]
203
    mov  eax,[scroll_bar_data_vertical.max_area]
204
    sub  eax,[scroll_bar_data_vertical.cur_area]
204
    sub  eax,[scroll_bar_data_vertical.cur_area]
205
    cmp  eax,[scroll_bar_data_vertical.position]
205
    cmp  eax,[scroll_bar_data_vertical.position]
206
    jae  @f
206
    jae  @f
207
    mov  [scroll_bar_data_vertical.position],eax
207
    mov  [scroll_bar_data_vertical.position],eax
208
@@:
208
@@:
209
;****************************************************************************
209
;****************************************************************************
210
; Horizontal SCROLLBAR
210
; Horizontal SCROLLBAR
211
; At a case of resizing of the window
211
; At a case of resizing of the window
212
; Check the position of a runner has crossed a limit
212
; Check the position of a runner has crossed a limit
213
;****************************************************************************
213
;****************************************************************************
214
    mov  eax,[scroll_bar_data_horizontal.max_area]
214
    mov  eax,[scroll_bar_data_horizontal.max_area]
215
    sub  eax,[scroll_bar_data_horizontal.cur_area]
215
    sub  eax,[scroll_bar_data_horizontal.cur_area]
216
    cmp  eax,[scroll_bar_data_horizontal.position]
216
    cmp  eax,[scroll_bar_data_horizontal.position]
217
    jae  @f
217
    jae  @f
218
    mov  [scroll_bar_data_horizontal.position],eax
218
    mov  [scroll_bar_data_horizontal.position],eax
219
@@:
219
@@:
220
;****************************************************************************
220
;****************************************************************************
221
; Calculate offset from a beginning of a image
221
; Calculate offset from a beginning of a image
222
;****************************************************************************
222
;****************************************************************************
223
    mov  ebx,[scroll_bar_data_horizontal.max_area]
223
    mov  ebx,[scroll_bar_data_horizontal.max_area]
224
    imul ebx,esi
224
    imul ebx,esi
225
    mov  eax,ebx    
225
    mov  eax,ebx    
226
    shr  ebx,3
226
    shr  ebx,3
227
    imul ebx,[scroll_bar_data_vertical.position]
227
    imul ebx,[scroll_bar_data_vertical.position]
228
    mov  eax,[scroll_bar_data_horizontal.position]
228
    mov  eax,[scroll_bar_data_horizontal.position]
229
    imul eax,esi
229
    imul eax,esi
230
    shr  eax,3
230
    shr  eax,3
231
    add  ebx,eax
231
    add  ebx,eax
232
    add  ebx,[soi]
232
    add  ebx,[soi]
233
.end:
233
.end:
234
    cmp  [soi],0
234
    cmp  [soi],0
235
    je   .exit_error ;.exit
235
    je   .exit_error ;.exit
236
;****************************************************************************
236
;****************************************************************************
237
; Draw image
237
; Draw image
238
;****************************************************************************
238
;****************************************************************************
239
    cmp   [img_resolution_2],15
239
    cmp   [img_resolution_2],15
240
    jne  @f
240
    jne  @f
241
	mov  esi,15
241
	mov  esi,15
242
@@:
242
@@:
243
	mov  [image_start_coordinates],edx
243
	mov  [image_start_coordinates],edx
244
	mov  [image_draw_size],ecx
244
	mov  [image_draw_size],ecx
245
	cmp [scaling_mode],dword 100
245
	cmp [scaling_mode],dword 100
246
	je  .100
246
	je  .100
247
	cmp [scaling_mode],dword 0
247
	cmp [scaling_mode],dword 0
248
	jne  @f
248
	jne  @f
249
	call scaling.1
249
	call scaling.1
250
	ret
250
	ret
251
@@:
251
@@:
252
	mov  [correct_scrollbar_100_flag],0
252
	mov  [correct_scrollbar_100_flag],0
253
	call zoom_all
253
	call zoom_all
254
	ret	
254
	ret	
255
.100:
255
.100:
256
	mov  al,[correct_scrollbar_100_flag]
256
	mov  al,[correct_scrollbar_100_flag]
257
	test al,al
257
	test al,al
258
	jnz  @r
258
	jnz  @r
259
;******************************
259
;******************************
260
	mov  eax,wa_width_1
260
	mov  eax,wa_width_1
261
	mov  eax,[eax]
261
	mov  eax,[eax]
262
	push eax
262
	push eax
263
	mov  eax,wa_high_1
263
	mov  eax,wa_high_1
264
	mov  eax,[eax]
264
	mov  eax,[eax]
265
	push eax	
265
	push eax	
266
;******************************
266
;******************************
267
	rol  ecx,16
267
	rol  ecx,16
268
    mov  eax,[scroll_bar_data_vertical.max_area]
268
    mov  eax,[scroll_bar_data_vertical.max_area]
269
    cmp  eax,[scroll_bar_data_vertical.cur_area]
269
    cmp  eax,[scroll_bar_data_vertical.cur_area]
270
	mov  ax,[wa_width_1]
270
	mov  ax,[wa_width_1]
271
    jbe  @f
271
    jbe  @f
272
	sub  ax,[scroll_bar_data_vertical.size_x]
272
	sub  ax,[scroll_bar_data_vertical.size_x]
273
	mov  [wa_width_1],ax
273
	mov  [wa_width_1],ax
274
@@:
274
@@:
275
	sub  ax,cx
275
	sub  ax,cx
276
	mov  [wa_width_2],cx
276
	mov  [wa_width_2],cx
277
	ror  ecx,16
277
	ror  ecx,16
278
	shr  ax,1
278
	shr  ax,1
279
	shl  eax,16
279
	shl  eax,16
280
	add  edx,eax
280
	add  edx,eax
281
	shr  eax,16
281
	shr  eax,16
282
	test eax,eax
282
	test eax,eax
283
	jz   @f
283
	jz   @f
284
	call scaling.fill_for_L_R
284
	call scaling.fill_for_L_R
285
@@:
285
@@:
286
    mov  eax,[scroll_bar_data_horizontal.max_area]
286
    mov  eax,[scroll_bar_data_horizontal.max_area]
287
    cmp  eax,[scroll_bar_data_horizontal.cur_area]
287
    cmp  eax,[scroll_bar_data_horizontal.cur_area]
288
	mov  ax,[wa_high_1]
288
	mov  ax,[wa_high_1]
289
    jbe  @f
289
    jbe  @f
290
	sub  ax,[scroll_bar_data_horizontal.size_y]
290
	sub  ax,[scroll_bar_data_horizontal.size_y]
291
	mov  [wa_high_1],ax
291
	mov  [wa_high_1],ax
292
@@:
292
@@:
293
	sub  ax,cx
293
	sub  ax,cx
294
	mov  [wa_high_2],cx
294
	mov  [wa_high_2],cx
295
	shr  ax,1
295
	shr  ax,1
296
	add  edx,eax
296
	add  edx,eax
297
	test eax,eax
297
	test eax,eax
298
	jz   @f
298
	jz   @f
299
	call scaling.fill_for_U_D
299
	call scaling.fill_for_U_D
300
@@:
300
@@:
301
;******************************
301
;******************************
302
    mcall 65,  ;[soi]
302
    mcall 65,  ;[soi]
303
;******************************
303
;******************************
304
	pop  eax
304
	pop  eax
305
	mov  ebx,wa_high_1
305
	mov  ebx,wa_high_1
306
	mov  [ebx],eax
306
	mov  [ebx],eax
307
	
307
	
308
	pop  eax
308
	pop  eax
309
	mov  ebx,wa_width_1
309
	mov  ebx,wa_width_1
310
	mov  [ebx],eax
310
	mov  [ebx],eax
311
;******************************
311
;******************************
312
.exit:
312
.exit:
313
	call draw_file_name_to_work_area
313
	call draw_file_name_to_work_area
314
	ret
314
	ret
315
 
315
 
316
.exit_error:
316
.exit_error:
317
	xor  eax,eax
317
	xor  eax,eax
318
	mov  [scroll_bar_data_vertical.cur_area],eax
318
	mov  [scroll_bar_data_vertical.cur_area],eax
319
	mov  [scroll_bar_data_horizontal.cur_area],eax
319
	mov  [scroll_bar_data_horizontal.cur_area],eax
320
	ret
320
	ret
321
;****************************************************************************	
321
;****************************************************************************	
322
draw_file_name_to_work_area:
322
draw_file_name_to_work_area:
323
	mov  eax,[check1+32]
323
	mov  eax,[check1+32]
324
	test  eax,10b
324
	test  eax,10b
325
	jz  @f
325
	jz  @f
326
	mov  ebx,[file_name_length]
326
	mov  ebx,[file_name_length]
327
	mov  eax,ebx
327
	mov  eax,ebx
328
	lea  ebx,[ebx*5]
328
	lea  ebx,[ebx*5]
329
	add  ebx,eax
329
	add  ebx,eax
330
	add  ebx,13 shl 16
330
	add  ebx,13 shl 16
331
	mcall 13,,<59,11>,0xe5e5e5
331
	mcall 13,,<59,11>,0xe5e5e5
332
	mcall 4,<16,60>,0x80000000,file_name,,0xe5e5e5
332
	mcall 4,<16,60>,0x80000000,file_name,,0xe5e5e5
333
@@:
333
@@:
334
	ret
334
	ret
335
;****************************************************************************
335
;****************************************************************************
336
;check_8bit_less:
336
;check_8bit_less:
337
;    cmp  esi,8
337
;    cmp  esi,8
338
;    jae  .no_8bit_less
338
;    jae  .no_8bit_less
339
;    mov  eax,ecx
339
;    mov  eax,ecx
340
;    ror  eax,16
340
;    ror  eax,16
341
;;    mov  ebx,eax
341
;;    mov  ebx,eax
342
;    xor  ecx,ecx
342
;    xor  ecx,ecx
343
;    
343
;    
344
;    inc  ecx
344
;    inc  ecx
345
;    shr  ax,1
345
;    shr  ax,1
346
;    
346
;    
347
;    cmp  esi,4
347
;    cmp  esi,4
348
;    je   @f
348
;    je   @f
349
;    
349
;    
350
;    inc  ecx
350
;    inc  ecx
351
;    shr  ax,1
351
;    shr  ax,1
352
;    
352
;    
353
;    cmp  esi,2
353
;    cmp  esi,2
354
;    je   @f
354
;    je   @f
355
;    
355
;    
356
;    inc  ecx
356
;    inc  ecx
357
;    shr  ax,1
357
;    shr  ax,1
358
;@@: 
358
;@@: 
359
;;    test ebx,ecx
359
;;    test ebx,ecx
360
;;    jz  @f
360
;;    jz  @f
361
;;    inc  eax
361
;;    inc  eax
362
;;@@:
362
;;@@:
363
;    shl  ax,cl
363
;    shl  ax,cl
364
;    rol  eax,16
364
;    rol  eax,16
365
;    mov  ecx,eax
365
;    mov  ecx,eax
366
;.no_8bit_less:
366
;.no_8bit_less:
367
;    ret
367
;    ret
368
;****************************************************************************
368
;****************************************************************************
369
correct_width:
369
correct_width:
370
    mov   [correct_w],0
370
    mov   [correct_w],0
371
    mov   ebx,[scroll_bar_data_vertical.max_area]
371
    mov   ebx,[scroll_bar_data_vertical.max_area]
372
    cmp   ebx,[scroll_bar_data_vertical.cur_area]
372
    cmp   ebx,[scroll_bar_data_vertical.cur_area]
373
    jbe   @f
373
    jbe   @f
374
    mov   eax,ecx
374
    mov   eax,ecx
375
    shr   eax,16
375
    shr   eax,16
376
	push  eax
376
	push  eax
377
	mov   ax,[scroll_bar_data_vertical.size_x]
377
	mov   ax,[scroll_bar_data_vertical.size_x]
378
	sub   [wa_width],ax
378
	sub   [wa_width],ax
379
	pop   eax
379
	pop   eax
380
    cmp   [wa_width],ax
380
    cmp   [wa_width],ax
381
    jae   @f
381
    jae   @f
382
    ror   ecx,16
382
    ror   ecx,16
383
    mov   cx,[wa_width]
383
    mov   cx,[wa_width]
384
    rol   ecx,16
384
    rol   ecx,16
385
    mov   [correct_w],1
385
    mov   [correct_w],1
386
@@:
386
@@:
387
    ret
387
    ret
388
;****************************************************************************
388
;****************************************************************************
389
correct_high:
389
correct_high:
390
    mov   [correct_h],0
390
    mov   [correct_h],0
391
    mov   eax,[scroll_bar_data_horizontal.max_area]
391
    mov   eax,[scroll_bar_data_horizontal.max_area]
392
    cmp   eax,[scroll_bar_data_horizontal.cur_area]
392
    cmp   eax,[scroll_bar_data_horizontal.cur_area]
393
    jbe   @f
393
    jbe   @f
394
	push  eax
394
	push  eax
395
	mov   ax,[scroll_bar_data_horizontal.size_y]
395
	mov   ax,[scroll_bar_data_horizontal.size_y]
396
	sub   [wa_high],ax
396
	sub   [wa_high],ax
397
	pop   eax
397
	pop   eax
398
    cmp   [wa_high],cx
398
    cmp   [wa_high],cx
399
    jae   @f
399
    jae   @f
400
    mov   cx,[wa_high]
400
    mov   cx,[wa_high]
401
    mov   [correct_h],1
401
    mov   [correct_h],1
402
@@:
402
@@:
403
    ret
403
    ret
404
;****************************************************************************
404
;****************************************************************************
405
correct_cur_area:
405
correct_cur_area:
406
    mov  eax,ecx
406
    mov  eax,ecx
407
    xor  ebx,ebx
407
    xor  ebx,ebx
408
    mov  bx,ax
408
    mov  bx,ax
409
    mov  [scroll_bar_data_vertical.cur_area],ebx
409
    mov  [scroll_bar_data_vertical.cur_area],ebx
410
    shr  eax,16
410
    shr  eax,16
411
    mov  [scroll_bar_data_horizontal.cur_area],eax
411
    mov  [scroll_bar_data_horizontal.cur_area],eax
412
    ret
412
    ret
413
;****************************************************************************
413
;****************************************************************************
414
; Check draw vertical scrollbar
414
; Check draw vertical scrollbar
415
;****************************************************************************
415
;****************************************************************************
416
draw_scrollbars:
416
draw_scrollbars:
417
	xor   eax,eax
417
	xor   eax,eax
418
	mov   [draw_scrollbar_counter],eax
418
	mov   [draw_scrollbar_counter],eax
419
    mov   eax,[scroll_bar_data_vertical.max_area]
419
    mov   eax,[scroll_bar_data_vertical.max_area]
420
    cmp   eax,[scroll_bar_data_vertical.cur_area]
420
    cmp   eax,[scroll_bar_data_vertical.cur_area]
421
    jbe   @f
421
    jbe   @f
422
	cmp   [scroll_bar_data_vertical.cur_area],0
422
	cmp   [scroll_bar_data_vertical.cur_area],0
423
	je   @f
423
	je   @f
424
	push    dword scroll_bar_data_vertical
424
	push    dword scroll_bar_data_vertical
425
	call    [scrollbar_ver_draw]
425
	call    [scrollbar_ver_draw]
426
;    draw_scroll_bar_vertical scroll_bar_data_vertical
426
;    draw_scroll_bar_vertical scroll_bar_data_vertical
427
	inc  [draw_scrollbar_counter]
427
	inc  [draw_scrollbar_counter]
428
@@:
428
@@:
429
;****************************************************************************
429
;****************************************************************************
430
; Check draw horizontal scrollbar
430
; Check draw horizontal scrollbar
431
;****************************************************************************
431
;****************************************************************************
432
    mov   eax,[scroll_bar_data_horizontal.max_area]
432
    mov   eax,[scroll_bar_data_horizontal.max_area]
433
    cmp   eax,[scroll_bar_data_horizontal.cur_area]
433
    cmp   eax,[scroll_bar_data_horizontal.cur_area]
434
    jbe   @f
434
    jbe   @f
435
	cmp   [scroll_bar_data_horizontal.cur_area],0
435
	cmp   [scroll_bar_data_horizontal.cur_area],0
436
	je   @f
436
	je   @f
437
	push    dword scroll_bar_data_horizontal
437
	push    dword scroll_bar_data_horizontal
438
	call    [scrollbar_hor_draw]
438
	call    [scrollbar_hor_draw]
439
;    draw_scroll_bar_horizontal scroll_bar_data_horizontal
439
;    draw_scroll_bar_horizontal scroll_bar_data_horizontal
440
	inc  [draw_scrollbar_counter]
440
	inc  [draw_scrollbar_counter]
441
@@:
441
@@:
442
;  nodrawimage:
442
;  nodrawimage:
443
	cmp  [draw_scrollbar_counter],2
443
	cmp  [draw_scrollbar_counter],2
444
	jne  @f
444
	jne  @f
445
	mov  ebx,[scroll_bar_data_vertical.x]
445
	mov  ebx,[scroll_bar_data_vertical.x]
446
	mov  ecx,[scroll_bar_data_horizontal.y]
446
	mov  ecx,[scroll_bar_data_horizontal.y]
447
	mcall 13, , ,0xffffff
447
	mcall 13, , ,0xffffff
448
@@:
448
@@:
449
    ret
449
    ret
450
;****************************************************************************
450
;****************************************************************************
451
;debug_1:    
451
;debug_1:    
452
;     pushad
452
;     pushad
453
;     mov   eax,ecx
453
;     mov   eax,ecx
454
;     shr   eax,16
454
;     shr   eax,16
455
;     mov   ebx,ecx
455
;     mov   ebx,ecx
456
;     shl   ebx,16
456
;     shl   ebx,16
457
;     shr   ebx,16
457
;     shr   ebx,16
458
;     mov   eax,[image_file]
458
;     mov   eax,[image_file]
459
;     mov   ebx,edi
459
;     mov   ebx,edi
460
;     mov   [temp_eax],eax
460
;     mov   [temp_eax],eax
461
;     mov   [temp_ebx],ebx
461
;     mov   [temp_ebx],ebx
462
;     mcall 13,<90,500>,<2,20>,0
462
;     mcall 13,<90,500>,<2,20>,0
463
;     mcall 47,0xa0000,[temp_eax],<100, 5>,0xffffff
463
;     mcall 47,0xa0000,[temp_eax],<100, 5>,0xffffff
464
;     mcall 47,0xa0000,[temp_ebx],<300, 5>,0xffffff
464
;     mcall 47,0xa0000,[temp_ebx],<300, 5>,0xffffff
465
;     popad
465
;     popad
466
;     ret
466
;     ret
467
;temp_eax dd 0
467
;temp_eax dd 0
468
;temp_ebx dd 0
468
;temp_ebx dd 0
469
;****************************************************************************
469
;****************************************************************************