[docs] Replace cyrillic 'с' with latin 'c' in register names
[kolibrios.git] / programs / media / zsea / zoom.inc
blobe89a3e24167794efe7379ac63d88ee8b28099754
1 ;---------------------------------------------------------------------\r
2 invert_left_to_right:\r
3         mov ebx,3\r
4         jmp  rotate_counter_clockwise.1\r
5 ;---------------------------------------------------------------------\r
6 invert_up_to_down:\r
7         mov ebx,4\r
8         jmp  rotate_counter_clockwise.1\r
9 ;---------------------------------------------------------------------\r
10 rotate_clockwise:\r
11         mov ebx,1\r
12         jmp  rotate_counter_clockwise.1\r
13 ;---------------------------------------------------------------------\r
14 rotate_counter_clockwise:\r
15         mov ebx,2\r
16 .1:\r
17         mov  eax,[soi]\r
18         test eax,eax\r
19         jz   still\r
20         \r
21         mov  eax,[RAW1_pointer]\r
22         test eax,eax\r
23         jz   @f\r
24         cmp  [Total_Repeat_N],1\r
25         ja   still\r
26 @@:\r
28         push  ebx\r
29         call  proc_position_correct\r
30         mov  eax,[vertical_position_coorect]\r
31         mov  ebx,[horizontal_position_coorect]\r
32         mov  [horizontal_position_coorect],eax\r
33         mov  [vertical_position_coorect],ebx\r
34         pop  ebx\r
35 ;       mov eax,image_file\r
36 ; ebx - direction\r
37 ; 1 - clockwise, 2 - counter clockwise\r
38 ; 3 - Left&Right, 4 - Up&Down\r
39         push    ebx\r
40         push    dword image_file\r
41 ;       call [plugin_rotate]\r
42         call [rotate_Start]\r
43         mov  ebx,[raw_pointer]\r
44         mov  eax,[ebx+4]\r
45         mov  [img_width],eax\r
46         mov  eax,[ebx+8]\r
47         mov  [img_high],eax\r
48         call convert.img_resolution_ok\r
49         jmp  kopen.1\r
50 ;---------------------------------------------------------------------\r
51 calculate_arrows_offset:\r
52         mov  eax,[arrows_offset]\r
53         imul eax,[scaling_mode]\r
54         mov  ebx,100\r
55         xor  edx,edx\r
56         div  ebx\r
57         mov  [scroll_bar_data_vertical.ar_offset],eax\r
58         mov  [scroll_bar_data_horizontal.ar_offset],eax\r
59         ret\r
60 ;---------------------------------------------------------------------\r
61 no_scaling:\r
62         mov  eax,scaling_mode\r
63         cmp  [eax],dword 100\r
64         je   still\r
65 .1:\r
66         mov  [eax],dword 100\r
67         mov  [zoom_factors],dword zoom_factors.100\r
68         mov  eax,[eax]\r
69         jmp   zoom_plus.2\r
70 ;---------------------------------------------------------------------\r
71 scaling:\r
72         mov  eax,[soi]\r
73         test eax,eax\r
74         jz   still\r
75         mov  eax,scaling_mode\r
76         xor  ebx,ebx\r
77         cmp  [eax],ebx  ;dword 0\r
78         je   still\r
79         mov  [eax],ebx  ;dword 0\r
80         mov  [zoom_factors],dword zoom_factors.1\r
81         call .1\r
82         call draw_zoom_factors\r
83         jmp  still\r
84 ;---------------------------\r
85 .compens_x:\r
86         call .get_x_y\r
87         xor  ecx,ecx\r
88         mov  cx,[wa_high_1]\r
89         imul eax,ecx\r
90         xor  edx,edx\r
91         div  ebx\r
92         ret\r
93 ;---------------------------\r
94 .compens_y:\r
95         call .get_x_y\r
96         xchg eax,ebx\r
97         xor  ecx,ecx\r
98         mov  cx,[wa_width_1]\r
99         imul eax,ecx\r
100         xor  edx,edx\r
101         div  ebx\r
102         ret\r
103 ;---------------------------\r
104 .get_x_y:\r
105     mov  ebx,[raw_pointer]\r
106     mov  eax,[ebx+4]\r
107         mov  ebx,[ebx+8]\r
108         ret\r
109 ;---------------------------\r
110 .fill_for_L_R:\r
111         cmp   [no_fill],1\r
112         je   @f\r
113         pusha\r
114         mov   ebx,[image_start_coordinates]\r
115         mov   ecx,ebx\r
116         shl   ecx,16\r
117         mov   bx,ax\r
118         mov   cx,[wa_high_1]\r
119         mcall 13,,,[fill_color] ;0xffffff\r
120         mov   ax,bx\r
121         ror   ebx,16\r
122         add   bx,ax\r
123         add   bx,[wa_width_2]\r
124         mov   ax,[wa_width_1]\r
125         sub   ax,bx\r
126         rol   ebx,16\r
127         mov   bx,ax\r
128         mcall 13,,,[fill_color]  ;0xffffff\r
129         popa\r
130 @@:\r
131         ret\r
132 ;---------------------------\r
133 .fill_for_U_D:\r
134         cmp   [no_fill],1\r
135         je   @f\r
136         pusha\r
137         mov   ebx,[image_start_coordinates]\r
138         mov   ecx,ebx\r
139         shl   ecx,16\r
140         mov   cx,ax\r
141         mov   bx,[wa_width_1]\r
142         mcall 13,,,[fill_color]  ;0xffffff\r
143         mov   ax,cx\r
144         ror   ecx,16\r
145         add   cx,ax\r
146         add   cx,[wa_high_2]\r
147         mov   ax,[wa_high_1]\r
148         add   ax,28  ;50\r
149         sub   ax,cx\r
150         rol   ecx,16\r
151         mov   cx,ax\r
152         mcall 13,,,[fill_color]  ;0xffffff\r
153         popa\r
154 @@:\r
155         ret\r
156 ;---------------------------\r
157 .1:\r
158         call .get_x_y\r
159         cmp  eax,ebx\r
160         jb  .y\r
161 ;---------------------------\r
162 .x:\r
163         call .compens_y\r
164         cmp  ax,[wa_high_1]\r
165         jbe @f\r
166         call .compens_x\r
167         mov  [wa_width_2],ax\r
168         jmp  .4\r
169 @@:\r
170         mov  [wa_high_2],ax\r
171         jmp  .4\r
172 ;---------------------------\r
173 .y:\r
174         call .compens_x\r
175         cmp  ax,[wa_width_1]\r
176         jbe  @f\r
177         call .compens_y\r
178         mov  [wa_high_2],ax\r
179         jmp  .4\r
180 @@:\r
181         mov  [wa_width_2],ax\r
182 ;---------------------------\r
183 .4:\r
184         mov bx,[wa_width_2]\r
185         shl ebx,16\r
186         mov bx,[wa_high_2]\r
188         xor  ecx,ecx\r
189 .5:\r
191 ;       mov  eax,ebx\r
192 ;       and  eax,0xffff\r
193 ;       mov  [test1],eax\r
195 ;       mov  eax,ebx\r
196 ;       shr  eax,16\r
197 ;       mov  [test2],eax\r
199 ;       mov  eax,ecx\r
200 ;       and  eax,0xffff\r
201 ;       mov  [test3],eax\r
203 ;       mov  eax,ecx\r
204 ;       shr  eax,16\r
205 ;       mov  [test4],eax\r
207 ;       mov eax,image_file\r
208 ;       mov  edx,[scaling_mode]\r
209         movzx  esi,byte [filtering_flag]\r
210 ;       mov  edi,[background_color]\r
212         push    dword 0                         ; eax - crop size\r
213         push    dword [background_color]        ; edi - background color\r
214         push    esi                             ; esi - filtering\r
215         push    dword [scaling_mode]            ; edx - scaling mode\r
216         push    ecx                             ; ecx - start_coordinates\r
217         push    ebx                             ; ebx - new_size\r
218         push    dword image_file                ; eax -  convert data table\r
220 ;       pusha\r
221 ;       mcall 26,9\r
222 ;       mov  [test1],eax\r
223 ;       popa\r
225         call [Scaling_Start]\r
227 ;       pusha\r
228 ;       mcall 26,9\r
229 ;       mov  ebx,[test1]\r
230 ;       sub  eax,ebx\r
231 ;       cmp  [test2],0\r
232 ;       je  @f\r
233 ;       add  eax,[test2]\r
234 ;       shr  eax,1\r
235 ;       cmp  eax,[test3]\r
236 ;       jbe  @f\r
237 ;       mov  [test3],eax\r
238 ;@@:\r
239 ;       mov  [test2],eax\r
240 ;       popa\r
242         mov  ecx,ebx\r
244         mov  edx,[image_start_coordinates]\r
246         mov  eax,edx\r
247         shl  eax,16\r
248         mov  ax,cx\r
249         mov  [scroll_bar_data_vertical.y],eax\r
250         \r
251         mov  eax,edx\r
252         mov  ebx,ecx\r
253         shr  ebx,16\r
254         mov  ax,bx\r
255         mov  [scroll_bar_data_horizontal.x],eax\r
257 ;       call correct_cur_area\r
259 ;       movzx eax,[wa_width_1]\r
260 ;       mov  [test1],eax\r
261 ;       movzx eax,[wa_width_2]\r
262 ;       mov  [test2],eax\r
264 ;       movzx eax,[wa_high_1]\r
265 ;       mov  [test3],eax\r
266 ;       movzx eax,[wa_high_2]\r
267 ;       mov  [test4],eax\r
269         xor  eax,eax\r
270         mov  ax,[wa_width_1]\r
271         sub  ax,[wa_width_2]\r
272         shr  ax,1\r
273         test ax,ax\r
274         jz  @f\r
275         shl  eax,16\r
276         add  edx,eax\r
277         shr  eax,16\r
278         call .fill_for_L_R\r
279 @@:\r
280         mov  ax,[wa_high_1]\r
281         sub  ax,[wa_high_2]\r
282         shr  ax,1\r
283         test ax,ax\r
284         jz  @f\r
285         add  edx,eax\r
286         call .fill_for_U_D\r
287 @@:\r
288 ;       mov   esi,[img_resolution]\r
289 ;       cmp   [img_resolution_2],15\r
290 ;       jne  @f\r
291 ;       mov  esi,15\r
292 ;@@:\r
293         mov     eax,[raw_pointer_2]\r
294         mov     esi,[eax+12]\r
295         \r
296         mov  eax,[raw_pointer]\r
297         mov  edi,[eax+20]\r
298         add  edi,eax\r
299 ;       mov  edi,[img_palette]\r
301         xor  ebp,ebp\r
303         mov  ebx,[raw_pointer_2]\r
304         mov     eax,[ebx+28]\r
305         add     ebx,eax\r
307         mov  eax,ecx\r
308         test ax,ax\r
309         jz   .no_draw  ;@f\r
310         shr  eax,16\r
311         test eax,eax\r
312         jz   .no_draw ;@f\r
314 ;       cmp  [filtering_flag],0\r
315 ;       je   @f\r
316 ;       cmp  esi,8\r
317 ;       jne  @f\r
318 ;       mov  esi,24\r
319 ;@@:\r
320         mcall 65\r
321 .no_draw:\r
322 ;       mov  eax,ecx\r
323 ;       shr  eax,16\r
324 ;       mov  [test1],eax\r
325 ;       \r
326 ;       mov  eax,ecx\r
327 ;       and  eax,0xffff\r
328 ;       mov  [test2],eax\r
330 ;       mov  eax,edx\r
331 ;       shr  eax,16\r
332 ;       mov  [test3],eax\r
333 ;       \r
334 ;       mov  eax,edx\r
335 ;       and  eax,0xffff\r
336 ;       mov  [test4],eax\r
338         call draw_file_name_to_work_area\r
339         mcall 68,13,[raw_pointer_2]\r
340         \r
341         \r
342         xor  eax,eax\r
343         mov  ax,[wa_width_2]\r
344         \r
345         mov  ebx,[img_width]\r
346 ;       imul eax,100\r
347         call    calculate_relation\r
348         mov  [zoom_auto_factor],eax\r
349         \r
350         ret\r
351 ;---------------------------------------------------------------------\r
352 calculate_relation:\r
353 ; relation = X*100/Y\r
354 ; eax = eax*100/ebx\r
355 ; ÅÀÕ = ÅÀÕ * 100\r
356         shl     eax,2      ; óìíîæåíèå íà 4\r
357         lea     eax,[eax+eax*4] ; óìíîæåíèå íà 5\r
358         lea     eax,[eax+eax*4] ; óìíîæåíèå íà 5\r
359 integer_division:\r
360 ; eax = eax/ebx\r
361         test    ebx,ebx\r
362         jnz     @f\r
363         inc     ebx\r
364 @@:\r
365         xor     edx,edx\r
366         div     ebx\r
367 ;       shl     edx,1\r
368 ;       cmp     ebx,edx\r
369 ;       jb      @f\r
370 ;       inc     eax\r
371 ;@@:\r
372         ret\r
373 ;---------------------------------------------------------------------\r
374 calculation_next_value_plus:\r
375         mov  ebx,[zoom_auto_factor]\r
376         mov  ecx,zoom_factors.min\r
377         sub  ecx,4\r
378 @@:\r
379         add  ecx,4\r
380         cmp  ecx,dword zoom_factors.max\r
381         jae  .max       \r
382         mov  eax,[ecx]\r
383         cmp  eax,ebx\r
384         jb   @r\r
385 @@:\r
386         mov  eax,zoom_factors\r
387         mov  [eax],ecx\r
388 ;       jmp  zoom_plus.1\r
389         ret\r
390 .max:\r
391         mov  ecx,dword zoom_factors.max\r
392         jmp  @r\r
393 ;---------------------------------------------------------------------\r
394 calculation_next_value_minus:\r
395         mov  ebx,[zoom_auto_factor]\r
396         mov  ecx,zoom_factors.max\r
397         add  ecx,4\r
398 @@:\r
399         sub  ecx,4\r
400         cmp  ecx,dword zoom_factors.min\r
401         jbe  .min       \r
402         mov  eax,[ecx]\r
403         cmp  eax,ebx\r
404         ja   @r\r
405 @@:\r
406         mov  eax,zoom_factors\r
407         mov  [eax],ecx\r
408 ;       jmp  zoom_plus.1\r
409         ret\r
410 .min:\r
411         mov  ecx,dword zoom_factors.min\r
412         jmp  @r\r
413 ;---------------------------------------------------------------------\r
414 proc_position_correct:\r
415         mov  [position_coorect],1\r
416         mov  eax,[scroll_bar_data_vertical.max_area]\r
417         xor  ebx,ebx\r
418         mov  bx,[wa_high_1]\r
419         shr  ebx,1\r
420         shl  eax,8\r
421         add  ebx,[scroll_bar_data_vertical.position]\r
422         test ebx,ebx\r
423         jnz  @f\r
424         inc  ebx\r
425 @@:\r
426         xor  edx,edx\r
427         div  ebx\r
428         mov  [vertical_position_coorect],eax\r
430         mov  eax,[scroll_bar_data_horizontal.max_area]\r
431         xor  ebx,ebx\r
432         mov  bx,[wa_width_1]\r
433         shr ebx,1\r
434         shl  eax,8\r
435         add  ebx,[scroll_bar_data_horizontal.position]\r
436         test ebx,ebx\r
437         jnz  @f\r
438         inc  ebx\r
439 @@:\r
440         xor  edx,edx\r
441         div  ebx\r
442         mov  [horizontal_position_coorect],eax\r
443         ret\r
444 ;---------------------------------------------------------------------\r
445 zoom_plus:\r
446 ;       cmp  [scaling_mode],dword 0\r
447         mov  eax,[scaling_mode]\r
448         test eax,eax\r
449 ;       jz   no_scaling.1\r
450 ;       jz   calculation_next_value_plus\r
451         jnz  @f\r
452         call  calculation_next_value_plus\r
453         jmp  .1\r
454 @@:\r
455 ;       jne  @f\r
456 ;       mov  [scaling_mode],dword 100\r
457 ;       mov  [zoom_factors],dword zoom_factors.100\r
458 ;       call  draw_zoom_factors\r
459 ;       jmp  red\r
460 ;@@:\r
461         mov  eax,zoom_factors\r
462         cmp  [eax],dword zoom_factors.max\r
463         jae  still\r
464         add  [eax],dword 4\r
465 .1:\r
466         mov  eax,[eax]\r
467         mov  eax,[eax]\r
468 .2:     \r
469         mov  [scaling_mode],eax\r
471         mov  [correct_scrollbar_100_flag],1\r
472         call calculate_arrows_offset\r
473         \r
474         call  proc_position_correct\r
476     call  drawimage\r
477         \r
478         call  set_draw_scrollbar_all\r
479     call  draw_scrollbars\r
480         call  set_nodraw_scrollbar_all\r
481         \r
482         call  draw_zoom_factors\r
483         jmp  still\r
485 zoom_all:\r
486 ;******************************\r
487         mov  eax,wa_width_1\r
488         mov  eax,[eax]\r
489         push eax\r
490         mov  eax,wa_high_1\r
491         mov  eax,[eax]\r
492         push eax\r
493 ;******************************\r
494         cmp  [position_coorect],0\r
495         je   .correct_end\r
496         mov  [position_coorect],0\r
497         mov  eax,[scroll_bar_data_vertical.max_area]\r
498 ;       xor  ebx,ebx\r
499 ;       mov  bx,[wa_high_1]\r
500 ;       shr  ebx,1\r
501 ;       add  eax,ebx  ;[scroll_bar_data_vertical.cur_area]\r
502         shl  eax,8\r
503         mov  ebx,[vertical_position_coorect]\r
504         test ebx,ebx\r
505         jnz  @f\r
506         inc  ebx\r
507 @@:\r
508         xor  edx,edx\r
509         div  ebx\r
510 ;       shr  eax,8\r
511         xor  ebx,ebx\r
512         mov  bx,[wa_high_1]\r
513         shr  ebx,1\r
514         cmp  eax,ebx\r
515         jae  @f\r
516         xor  eax,eax\r
517         jmp  .position_vertical_correct\r
518 @@:\r
519         sub  eax,ebx\r
520 .position_vertical_correct:\r
521         mov  [scroll_bar_data_vertical.position],eax\r
522         \r
523         mov  eax,[scroll_bar_data_horizontal.max_area]\r
524 ;       xor  ebx,ebx\r
525 ;       mov  bx,[wa_width_1]\r
526 ;       shr  ebx,1\r
527 ;       add  eax,ebx  ;[scroll_bar_data_horizontal.cur_area]\r
528         shl  eax,8\r
529         mov  ebx,[horizontal_position_coorect]\r
530         test ebx,ebx\r
531         jnz  @f\r
532         inc  ebx\r
533 @@:\r
534         xor  edx,edx\r
535         div  ebx\r
536 ;       shr  eax,8\r
537         xor  ebx,ebx\r
538         mov  bx,[wa_width_1]\r
539         shr  ebx,1\r
540         cmp  eax,ebx\r
541         jae  @f\r
542         xor  eax,eax\r
543         jmp  .position_horizontal_correct\r
544 @@:\r
545         sub  eax,ebx\r
546 .position_horizontal_correct:\r
547         mov  [scroll_bar_data_horizontal.position],eax\r
548         \r
549 .correct_end:\r
551 ;****************************************************************************\r
552 ; Vertical SCROLLBAR\r
553 ; At a case of resizing of the window\r
554 ; Check the position of a runner has crossed a limit\r
555 ;****************************************************************************\r
556     mov  eax,[scroll_bar_data_vertical.max_area]\r
557         xor  ebx,ebx\r
558         mov  bx,[wa_high_1]\r
559         cmp  eax,ebx\r
560         ja   @f\r
561         xor  eax,eax\r
562         jmp  .p_5\r
563 @@:\r
564     sub  eax,ebx  ;[scroll_bar_data_vertical.cur_area]\r
565     cmp  eax,[scroll_bar_data_vertical.position]\r
566     jae  @f\r
567 .p_5:\r
568     mov  [scroll_bar_data_vertical.position],eax\r
569 @@:\r
570 ;****************************************************************************\r
571 ; Horizontal SCROLLBAR\r
572 ; At a case of resizing of the window\r
573 ; Check the position of a runner has crossed a limit\r
574 ;****************************************************************************\r
575     mov  eax,[scroll_bar_data_horizontal.max_area]\r
576         xor  ebx,ebx\r
577         mov  bx,[wa_width_1]\r
578         cmp  eax,ebx\r
579         ja   @f\r
580         xor  eax,eax\r
581         jmp  .p_6\r
582 @@:\r
583     sub  eax,ebx  ;[scroll_bar_data_horizontal.cur_area]\r
584     cmp  eax,[scroll_bar_data_horizontal.position]\r
585     jae  @f\r
586 .p_6:\r
587     mov  [scroll_bar_data_horizontal.position],eax\r
588 @@:\r
589 ;****************************************************************************\r
591         mov   eax,[scroll_bar_data_horizontal.max_area]\r
592         mov   ebx,[scroll_bar_data_vertical.max_area]\r
595         sub   eax,[scroll_bar_data_horizontal.position]   ;100\r
596         sub   ebx,[scroll_bar_data_vertical.position]    ;100\r
598         xor   ecx,ecx\r
599         mov   cx,word [wa_width_1]\r
600         cmp   eax,ecx\r
601         jbe   @f\r
602         xor   eax,eax\r
603         mov   ax,[wa_width_1]\r
604 @@:\r
605         mov   [wa_width_2],ax\r
606         mov   ecx,eax\r
607         shl   ecx,16\r
608         xchg  eax,ebx\r
610         xor   edx,edx\r
611         mov   dx,word [wa_high_1]\r
612         cmp   eax,edx\r
613         jbe   @f\r
614         xor   eax,eax\r
615         mov   ax,[wa_high_1]\r
616 @@:\r
617         mov   [wa_high_2],ax\r
618         mov   cx,ax\r
620         call  correct_cur_area\r
622         mov   ebx,ecx\r
624         push eax\r
625         mov  eax,[scroll_bar_data_vertical.max_area]\r
626         cmp  eax,[scroll_bar_data_vertical.cur_area]\r
627         jbe  .horizontal  ;@f\r
628         mov  ax,[wa_width_1]\r
629         sub  ax,[scroll_bar_data_vertical.size_x]\r
630         mov  [wa_width_1],ax\r
631         cmp  ax,[wa_width_2]\r
632         jae  .horizontal\r
633         mov  [wa_width_2],ax\r
634 .horizontal:\r
635         mov  eax,[scroll_bar_data_horizontal.max_area]\r
636         cmp  eax,[scroll_bar_data_horizontal.cur_area]\r
637         jbe  .finish   ;@f\r
638         mov  ax,[wa_high_1]\r
639         sub  ax,[scroll_bar_data_horizontal.size_y]\r
640         mov  [wa_high_1],ax\r
641         cmp  ax,[wa_high_2]\r
642         jae  .finish\r
643         mov  [wa_high_2],ax\r
644 .finish:   ;@@:\r
645         pop  eax\r
647         mov  cx,[wa_width_2]\r
648         shl ecx,16\r
649         mov  cx,[wa_high_2]\r
651         call  correct_cur_area\r
653         mov   ebx,ecx\r
655         mov  eax,[scroll_bar_data_horizontal.position]\r
657 ;       imul eax,100\r
658 ; ÅÀÕ = ÅÀÕ * 100\r
659     shl eax,2      ; óìíîæåíèå íà 4\r
660     lea eax,[eax+eax*4] ; óìíîæåíèå íà 5\r
661     lea eax,[eax+eax*4] ; óìíîæåíèå íà 5\r
662         push ebx\r
663         mov  ebx,[scaling_mode]\r
664         xor  edx,edx\r
665         div  ebx\r
667 ;       shl  edx,1\r
668 ;       cmp  edx,ebx\r
669 ;       jb  @f\r
670 ;       inc  eax\r
671 ;@@:\r
673         pop  ebx\r
675         mov  ecx,eax\r
676         shl  ecx,16\r
678         mov  eax,[scroll_bar_data_vertical.position]\r
680 ;       imul eax,100\r
681 ; ÅÀÕ = ÅÀÕ * 100\r
682     shl eax,2      ; óìíîæåíèå íà 4\r
683     lea eax,[eax+eax*4] ; óìíîæåíèå íà 5\r
684     lea eax,[eax+eax*4] ; óìíîæåíèå íà 5\r
685         push ebx\r
686         mov  ebx,[scaling_mode]\r
687         xor  edx,edx\r
688         div  ebx\r
690 ;       shl  edx,1\r
691 ;       cmp  edx,ebx\r
692 ;       jb  @f\r
693 ;       inc  eax\r
694 ;@@:\r
696         pop  ebx\r
698         mov  cx,ax\r
700         call   scaling.5\r
701 ;******************************\r
702         pop  eax\r
703         mov  ebx,wa_high_1\r
704         mov  [ebx],eax\r
706         pop  eax\r
707         mov  ebx,wa_width_1\r
708         mov  [ebx],eax\r
709 ;******************************\r
711         ret\r
712 ;---------------------------------------------------------------------\r
713 zoom_minus:\r
714 ;       cmp  [scaling_mode],dword 0\r
715         mov  eax,[scaling_mode]\r
716         test eax,eax\r
717 ;       jz   no_scaling.1\r
718 ;       jz   calculation_next_value_minus\r
719         jnz  @f\r
720         call  calculation_next_value_minus\r
721         jmp  zoom_plus.1\r
722 @@:\r
723 ;       je   no_scaling.1\r
724 ;       jne  @f\r
725 ;       mov  [scaling_mode],dword 100\r
726 ;       mov  [zoom_factors],dword zoom_factors.100\r
727 ;       call  draw_zoom_factors\r
728 ;       jmp  red\r
729 ;@@:\r
730         mov  eax,zoom_factors\r
731         cmp  [eax],dword zoom_factors.min\r
732         jbe  still\r
733         sub  [eax],dword 4\r
734         jmp   zoom_plus.1\r
735 ;---------------------------------------------------------------------