mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-22 14:52:39 +03:00
d250796055
1) background image to the proportional stretching with cropping 2) optimize scaling.obj 3) scaling.obj and convert.obj support RAW header to all cases is now git-svn-id: svn://kolibrios.org@2163 a494cfbc-eb01-0410-851d-a64ba20cac60
735 lines
14 KiB
PHP
735 lines
14 KiB
PHP
;---------------------------------------------------------------------
|
||
invert_left_to_right:
|
||
mov ebx,3
|
||
jmp rotate_counter_clockwise.1
|
||
;---------------------------------------------------------------------
|
||
invert_up_to_down:
|
||
mov ebx,4
|
||
jmp rotate_counter_clockwise.1
|
||
;---------------------------------------------------------------------
|
||
rotate_clockwise:
|
||
mov ebx,1
|
||
jmp rotate_counter_clockwise.1
|
||
;---------------------------------------------------------------------
|
||
rotate_counter_clockwise:
|
||
mov ebx,2
|
||
.1:
|
||
mov eax,[soi]
|
||
test eax,eax
|
||
jz still
|
||
|
||
mov eax,[RAW1_pointer]
|
||
test eax,eax
|
||
jz @f
|
||
cmp [Total_Repeat_N],1
|
||
ja still
|
||
@@:
|
||
|
||
push ebx
|
||
call proc_position_correct
|
||
mov eax,[vertical_position_coorect]
|
||
mov ebx,[horizontal_position_coorect]
|
||
mov [horizontal_position_coorect],eax
|
||
mov [vertical_position_coorect],ebx
|
||
pop ebx
|
||
; mov eax,image_file
|
||
; ebx - direction
|
||
; 1 - clockwise, 2 - counter clockwise
|
||
; 3 - Left&Right, 4 - Up&Down
|
||
push ebx
|
||
push dword image_file
|
||
; call [plugin_rotate]
|
||
call [rotate_Start]
|
||
mov ebx,[raw_pointer]
|
||
mov eax,[ebx+4]
|
||
mov [img_width],eax
|
||
mov eax,[ebx+8]
|
||
mov [img_high],eax
|
||
call convert.img_resolution_ok
|
||
jmp kopen.1
|
||
;---------------------------------------------------------------------
|
||
calculate_arrows_offset:
|
||
mov eax,[arrows_offset]
|
||
imul eax,[scaling_mode]
|
||
mov ebx,100
|
||
xor edx,edx
|
||
div ebx
|
||
mov [scroll_bar_data_vertical.ar_offset],eax
|
||
mov [scroll_bar_data_horizontal.ar_offset],eax
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
no_scaling:
|
||
mov eax,scaling_mode
|
||
cmp [eax],dword 100
|
||
je still
|
||
.1:
|
||
mov [eax],dword 100
|
||
mov [zoom_factors],dword zoom_factors.100
|
||
mov eax,[eax]
|
||
jmp zoom_plus.2
|
||
;---------------------------------------------------------------------
|
||
scaling:
|
||
mov eax,[soi]
|
||
test eax,eax
|
||
jz still
|
||
mov eax,scaling_mode
|
||
xor ebx,ebx
|
||
cmp [eax],ebx ;dword 0
|
||
je still
|
||
mov [eax],ebx ;dword 0
|
||
mov [zoom_factors],dword zoom_factors.1
|
||
call .1
|
||
call draw_zoom_factors
|
||
jmp still
|
||
;---------------------------
|
||
.compens_x:
|
||
call .get_x_y
|
||
xor ecx,ecx
|
||
mov cx,[wa_high_1]
|
||
imul eax,ecx
|
||
xor edx,edx
|
||
div ebx
|
||
ret
|
||
;---------------------------
|
||
.compens_y:
|
||
call .get_x_y
|
||
xchg eax,ebx
|
||
xor ecx,ecx
|
||
mov cx,[wa_width_1]
|
||
imul eax,ecx
|
||
xor edx,edx
|
||
div ebx
|
||
ret
|
||
;---------------------------
|
||
.get_x_y:
|
||
mov ebx,[raw_pointer]
|
||
mov eax,[ebx+4]
|
||
mov ebx,[ebx+8]
|
||
ret
|
||
;---------------------------
|
||
.fill_for_L_R:
|
||
cmp [no_fill],1
|
||
je @f
|
||
pusha
|
||
mov ebx,[image_start_coordinates]
|
||
mov ecx,ebx
|
||
shl ecx,16
|
||
mov bx,ax
|
||
mov cx,[wa_high_1]
|
||
mcall 13,,,[fill_color] ;0xffffff
|
||
mov ax,bx
|
||
ror ebx,16
|
||
add bx,ax
|
||
add bx,[wa_width_2]
|
||
mov ax,[wa_width_1]
|
||
sub ax,bx
|
||
rol ebx,16
|
||
mov bx,ax
|
||
mcall 13,,,[fill_color] ;0xffffff
|
||
popa
|
||
@@:
|
||
ret
|
||
;---------------------------
|
||
.fill_for_U_D:
|
||
cmp [no_fill],1
|
||
je @f
|
||
pusha
|
||
mov ebx,[image_start_coordinates]
|
||
mov ecx,ebx
|
||
shl ecx,16
|
||
mov cx,ax
|
||
mov bx,[wa_width_1]
|
||
mcall 13,,,[fill_color] ;0xffffff
|
||
mov ax,cx
|
||
ror ecx,16
|
||
add cx,ax
|
||
add cx,[wa_high_2]
|
||
mov ax,[wa_high_1]
|
||
add ax,28 ;50
|
||
sub ax,cx
|
||
rol ecx,16
|
||
mov cx,ax
|
||
mcall 13,,,[fill_color] ;0xffffff
|
||
popa
|
||
@@:
|
||
ret
|
||
;---------------------------
|
||
.1:
|
||
call .get_x_y
|
||
cmp eax,ebx
|
||
jb .y
|
||
;---------------------------
|
||
.x:
|
||
call .compens_y
|
||
cmp ax,[wa_high_1]
|
||
jbe @f
|
||
call .compens_x
|
||
mov [wa_width_2],ax
|
||
jmp .4
|
||
@@:
|
||
mov [wa_high_2],ax
|
||
jmp .4
|
||
;---------------------------
|
||
.y:
|
||
call .compens_x
|
||
cmp ax,[wa_width_1]
|
||
jbe @f
|
||
call .compens_y
|
||
mov [wa_high_2],ax
|
||
jmp .4
|
||
@@:
|
||
mov [wa_width_2],ax
|
||
;---------------------------
|
||
.4:
|
||
mov bx,[wa_width_2]
|
||
shl ebx,16
|
||
mov bx,[wa_high_2]
|
||
|
||
xor ecx,ecx
|
||
.5:
|
||
|
||
; mov eax,ebx
|
||
; and eax,0xffff
|
||
; mov [test1],eax
|
||
|
||
; mov eax,ebx
|
||
; shr eax,16
|
||
; mov [test2],eax
|
||
|
||
; mov eax,ecx
|
||
; and eax,0xffff
|
||
; mov [test3],eax
|
||
|
||
; mov eax,ecx
|
||
; shr eax,16
|
||
; mov [test4],eax
|
||
|
||
; mov eax,image_file
|
||
; mov edx,[scaling_mode]
|
||
movzx esi,byte [filtering_flag]
|
||
; mov edi,[background_color]
|
||
|
||
push dword 0 ; eax - crop size
|
||
push dword [background_color] ; edi - background color
|
||
push esi ; esi - filtering
|
||
push dword [scaling_mode] ; edx - scaling mode
|
||
push ecx ; ecx - start_coordinates
|
||
push ebx ; ebx - new_size
|
||
push dword image_file ; eax - convert data table
|
||
|
||
; pusha
|
||
; mcall 26,9
|
||
; mov [test1],eax
|
||
; popa
|
||
|
||
call [Scaling_Start]
|
||
|
||
; pusha
|
||
; mcall 26,9
|
||
; mov ebx,[test1]
|
||
; sub eax,ebx
|
||
; cmp [test2],0
|
||
; je @f
|
||
; add eax,[test2]
|
||
; shr eax,1
|
||
; cmp eax,[test3]
|
||
; jbe @f
|
||
; mov [test3],eax
|
||
;@@:
|
||
; mov [test2],eax
|
||
; popa
|
||
|
||
mov ecx,ebx
|
||
|
||
mov edx,[image_start_coordinates]
|
||
|
||
mov eax,edx
|
||
shl eax,16
|
||
mov ax,cx
|
||
mov [scroll_bar_data_vertical.y],eax
|
||
|
||
mov eax,edx
|
||
mov ebx,ecx
|
||
shr ebx,16
|
||
mov ax,bx
|
||
mov [scroll_bar_data_horizontal.x],eax
|
||
|
||
; call correct_cur_area
|
||
|
||
; movzx eax,[wa_width_1]
|
||
; mov [test1],eax
|
||
; movzx eax,[wa_width_2]
|
||
; mov [test2],eax
|
||
|
||
; movzx eax,[wa_high_1]
|
||
; mov [test3],eax
|
||
; movzx eax,[wa_high_2]
|
||
; mov [test4],eax
|
||
|
||
xor eax,eax
|
||
mov ax,[wa_width_1]
|
||
sub ax,[wa_width_2]
|
||
shr ax,1
|
||
test ax,ax
|
||
jz @f
|
||
shl eax,16
|
||
add edx,eax
|
||
shr eax,16
|
||
call .fill_for_L_R
|
||
@@:
|
||
mov ax,[wa_high_1]
|
||
sub ax,[wa_high_2]
|
||
shr ax,1
|
||
test ax,ax
|
||
jz @f
|
||
add edx,eax
|
||
call .fill_for_U_D
|
||
@@:
|
||
; mov esi,[img_resolution]
|
||
; cmp [img_resolution_2],15
|
||
; jne @f
|
||
; mov esi,15
|
||
;@@:
|
||
mov eax,[raw_pointer_2]
|
||
mov esi,[eax+12]
|
||
|
||
mov eax,[raw_pointer]
|
||
mov edi,[eax+20]
|
||
add edi,eax
|
||
; mov edi,[img_palette]
|
||
|
||
xor ebp,ebp
|
||
|
||
mov ebx,[raw_pointer_2]
|
||
mov eax,[ebx+28]
|
||
add ebx,eax
|
||
|
||
mov eax,ecx
|
||
test ax,ax
|
||
jz .no_draw ;@f
|
||
shr eax,16
|
||
test eax,eax
|
||
jz .no_draw ;@f
|
||
|
||
; cmp [filtering_flag],0
|
||
; je @f
|
||
; cmp esi,8
|
||
; jne @f
|
||
; mov esi,24
|
||
;@@:
|
||
mcall 65
|
||
.no_draw:
|
||
; mov eax,ecx
|
||
; shr eax,16
|
||
; mov [test1],eax
|
||
;
|
||
; mov eax,ecx
|
||
; and eax,0xffff
|
||
; mov [test2],eax
|
||
;
|
||
; mov eax,edx
|
||
; shr eax,16
|
||
; mov [test3],eax
|
||
;
|
||
; mov eax,edx
|
||
; and eax,0xffff
|
||
; mov [test4],eax
|
||
|
||
call draw_file_name_to_work_area
|
||
mcall 68,13,[raw_pointer_2]
|
||
|
||
|
||
xor eax,eax
|
||
mov ax,[wa_width_2]
|
||
|
||
mov ebx,[img_width]
|
||
; imul eax,100
|
||
call calculate_relation
|
||
mov [zoom_auto_factor],eax
|
||
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
calculate_relation:
|
||
; relation = X*100/Y
|
||
; eax = eax*100/ebx
|
||
; <EFBFBD><EFBFBD><EFBFBD> = <EFBFBD><EFBFBD><EFBFBD> * 100
|
||
shl eax,2 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 4
|
||
lea eax,[eax+eax*4] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 5
|
||
lea eax,[eax+eax*4] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 5
|
||
integer_division:
|
||
; eax = eax/ebx
|
||
test ebx,ebx
|
||
jnz @f
|
||
inc ebx
|
||
@@:
|
||
xor edx,edx
|
||
div ebx
|
||
; shl edx,1
|
||
; cmp ebx,edx
|
||
; jb @f
|
||
; inc eax
|
||
;@@:
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
calculation_next_value_plus:
|
||
mov ebx,[zoom_auto_factor]
|
||
mov ecx,zoom_factors.min
|
||
sub ecx,4
|
||
@@:
|
||
add ecx,4
|
||
cmp ecx,dword zoom_factors.max
|
||
jae .max
|
||
mov eax,[ecx]
|
||
cmp eax,ebx
|
||
jb @r
|
||
@@:
|
||
mov eax,zoom_factors
|
||
mov [eax],ecx
|
||
; jmp zoom_plus.1
|
||
ret
|
||
.max:
|
||
mov ecx,dword zoom_factors.max
|
||
jmp @r
|
||
;---------------------------------------------------------------------
|
||
calculation_next_value_minus:
|
||
mov ebx,[zoom_auto_factor]
|
||
mov ecx,zoom_factors.max
|
||
add ecx,4
|
||
@@:
|
||
sub ecx,4
|
||
cmp ecx,dword zoom_factors.min
|
||
jbe .min
|
||
mov eax,[ecx]
|
||
cmp eax,ebx
|
||
ja @r
|
||
@@:
|
||
mov eax,zoom_factors
|
||
mov [eax],ecx
|
||
; jmp zoom_plus.1
|
||
ret
|
||
.min:
|
||
mov ecx,dword zoom_factors.min
|
||
jmp @r
|
||
;---------------------------------------------------------------------
|
||
proc_position_correct:
|
||
mov [position_coorect],1
|
||
mov eax,[scroll_bar_data_vertical.max_area]
|
||
xor ebx,ebx
|
||
mov bx,[wa_high_1]
|
||
shr ebx,1
|
||
shl eax,8
|
||
add ebx,[scroll_bar_data_vertical.position]
|
||
test ebx,ebx
|
||
jnz @f
|
||
inc ebx
|
||
@@:
|
||
xor edx,edx
|
||
div ebx
|
||
mov [vertical_position_coorect],eax
|
||
|
||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||
xor ebx,ebx
|
||
mov bx,[wa_width_1]
|
||
shr ebx,1
|
||
shl eax,8
|
||
add ebx,[scroll_bar_data_horizontal.position]
|
||
test ebx,ebx
|
||
jnz @f
|
||
inc ebx
|
||
@@:
|
||
xor edx,edx
|
||
div ebx
|
||
mov [horizontal_position_coorect],eax
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
zoom_plus:
|
||
; cmp [scaling_mode],dword 0
|
||
mov eax,[scaling_mode]
|
||
test eax,eax
|
||
; jz no_scaling.1
|
||
; jz calculation_next_value_plus
|
||
jnz @f
|
||
call calculation_next_value_plus
|
||
jmp .1
|
||
@@:
|
||
; jne @f
|
||
; mov [scaling_mode],dword 100
|
||
; mov [zoom_factors],dword zoom_factors.100
|
||
; call draw_zoom_factors
|
||
; jmp red
|
||
;@@:
|
||
mov eax,zoom_factors
|
||
cmp [eax],dword zoom_factors.max
|
||
jae still
|
||
add [eax],dword 4
|
||
.1:
|
||
mov eax,[eax]
|
||
mov eax,[eax]
|
||
.2:
|
||
mov [scaling_mode],eax
|
||
|
||
mov [correct_scrollbar_100_flag],1
|
||
call calculate_arrows_offset
|
||
|
||
call proc_position_correct
|
||
|
||
call drawimage
|
||
|
||
call set_draw_scrollbar_all
|
||
call draw_scrollbars
|
||
call set_nodraw_scrollbar_all
|
||
|
||
call draw_zoom_factors
|
||
jmp still
|
||
|
||
zoom_all:
|
||
;******************************
|
||
mov eax,wa_width_1
|
||
mov eax,[eax]
|
||
push eax
|
||
mov eax,wa_high_1
|
||
mov eax,[eax]
|
||
push eax
|
||
;******************************
|
||
cmp [position_coorect],0
|
||
je .correct_end
|
||
mov [position_coorect],0
|
||
mov eax,[scroll_bar_data_vertical.max_area]
|
||
; xor ebx,ebx
|
||
; mov bx,[wa_high_1]
|
||
; shr ebx,1
|
||
; add eax,ebx ;[scroll_bar_data_vertical.cur_area]
|
||
shl eax,8
|
||
mov ebx,[vertical_position_coorect]
|
||
test ebx,ebx
|
||
jnz @f
|
||
inc ebx
|
||
@@:
|
||
xor edx,edx
|
||
div ebx
|
||
; shr eax,8
|
||
xor ebx,ebx
|
||
mov bx,[wa_high_1]
|
||
shr ebx,1
|
||
cmp eax,ebx
|
||
jae @f
|
||
xor eax,eax
|
||
jmp .position_vertical_correct
|
||
@@:
|
||
sub eax,ebx
|
||
.position_vertical_correct:
|
||
mov [scroll_bar_data_vertical.position],eax
|
||
|
||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||
; xor ebx,ebx
|
||
; mov bx,[wa_width_1]
|
||
; shr ebx,1
|
||
; add eax,ebx ;[scroll_bar_data_horizontal.cur_area]
|
||
shl eax,8
|
||
mov ebx,[horizontal_position_coorect]
|
||
test ebx,ebx
|
||
jnz @f
|
||
inc ebx
|
||
@@:
|
||
xor edx,edx
|
||
div ebx
|
||
; shr eax,8
|
||
xor ebx,ebx
|
||
mov bx,[wa_width_1]
|
||
shr ebx,1
|
||
cmp eax,ebx
|
||
jae @f
|
||
xor eax,eax
|
||
jmp .position_horizontal_correct
|
||
@@:
|
||
sub eax,ebx
|
||
.position_horizontal_correct:
|
||
mov [scroll_bar_data_horizontal.position],eax
|
||
|
||
.correct_end:
|
||
|
||
;****************************************************************************
|
||
; Vertical SCROLLBAR
|
||
; At a case of resizing of the window
|
||
; Check the position of a runner has crossed a limit
|
||
;****************************************************************************
|
||
mov eax,[scroll_bar_data_vertical.max_area]
|
||
xor ebx,ebx
|
||
mov bx,[wa_high_1]
|
||
cmp eax,ebx
|
||
ja @f
|
||
xor eax,eax
|
||
jmp .p_5
|
||
@@:
|
||
sub eax,ebx ;[scroll_bar_data_vertical.cur_area]
|
||
cmp eax,[scroll_bar_data_vertical.position]
|
||
jae @f
|
||
.p_5:
|
||
mov [scroll_bar_data_vertical.position],eax
|
||
@@:
|
||
;****************************************************************************
|
||
; Horizontal SCROLLBAR
|
||
; At a case of resizing of the window
|
||
; Check the position of a runner has crossed a limit
|
||
;****************************************************************************
|
||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||
xor ebx,ebx
|
||
mov bx,[wa_width_1]
|
||
cmp eax,ebx
|
||
ja @f
|
||
xor eax,eax
|
||
jmp .p_6
|
||
@@:
|
||
sub eax,ebx ;[scroll_bar_data_horizontal.cur_area]
|
||
cmp eax,[scroll_bar_data_horizontal.position]
|
||
jae @f
|
||
.p_6:
|
||
mov [scroll_bar_data_horizontal.position],eax
|
||
@@:
|
||
;****************************************************************************
|
||
|
||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||
mov ebx,[scroll_bar_data_vertical.max_area]
|
||
|
||
|
||
sub eax,[scroll_bar_data_horizontal.position] ;100
|
||
sub ebx,[scroll_bar_data_vertical.position] ;100
|
||
|
||
xor ecx,ecx
|
||
mov cx,word [wa_width_1]
|
||
cmp eax,ecx
|
||
jbe @f
|
||
xor eax,eax
|
||
mov ax,[wa_width_1]
|
||
@@:
|
||
mov [wa_width_2],ax
|
||
mov ecx,eax
|
||
shl ecx,16
|
||
xchg eax,ebx
|
||
|
||
xor edx,edx
|
||
mov dx,word [wa_high_1]
|
||
cmp eax,edx
|
||
jbe @f
|
||
xor eax,eax
|
||
mov ax,[wa_high_1]
|
||
@@:
|
||
mov [wa_high_2],ax
|
||
mov cx,ax
|
||
|
||
call correct_cur_area
|
||
|
||
mov ebx,ecx
|
||
|
||
push eax
|
||
mov eax,[scroll_bar_data_vertical.max_area]
|
||
cmp eax,[scroll_bar_data_vertical.cur_area]
|
||
jbe .horizontal ;@f
|
||
mov ax,[wa_width_1]
|
||
sub ax,[scroll_bar_data_vertical.size_x]
|
||
mov [wa_width_1],ax
|
||
cmp ax,[wa_width_2]
|
||
jae .horizontal
|
||
mov [wa_width_2],ax
|
||
.horizontal:
|
||
mov eax,[scroll_bar_data_horizontal.max_area]
|
||
cmp eax,[scroll_bar_data_horizontal.cur_area]
|
||
jbe .finish ;@f
|
||
mov ax,[wa_high_1]
|
||
sub ax,[scroll_bar_data_horizontal.size_y]
|
||
mov [wa_high_1],ax
|
||
cmp ax,[wa_high_2]
|
||
jae .finish
|
||
mov [wa_high_2],ax
|
||
.finish: ;@@:
|
||
pop eax
|
||
|
||
mov cx,[wa_width_2]
|
||
shl ecx,16
|
||
mov cx,[wa_high_2]
|
||
|
||
call correct_cur_area
|
||
|
||
mov ebx,ecx
|
||
|
||
mov eax,[scroll_bar_data_horizontal.position]
|
||
|
||
; imul eax,100
|
||
; <EFBFBD><EFBFBD><EFBFBD> = <EFBFBD><EFBFBD><EFBFBD> * 100
|
||
shl eax,2 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 4
|
||
lea eax,[eax+eax*4] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 5
|
||
lea eax,[eax+eax*4] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 5
|
||
push ebx
|
||
mov ebx,[scaling_mode]
|
||
xor edx,edx
|
||
div ebx
|
||
|
||
; shl edx,1
|
||
; cmp edx,ebx
|
||
; jb @f
|
||
; inc eax
|
||
;@@:
|
||
|
||
pop ebx
|
||
|
||
mov ecx,eax
|
||
shl ecx,16
|
||
|
||
mov eax,[scroll_bar_data_vertical.position]
|
||
|
||
; imul eax,100
|
||
; <EFBFBD><EFBFBD><EFBFBD> = <EFBFBD><EFBFBD><EFBFBD> * 100
|
||
shl eax,2 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 4
|
||
lea eax,[eax+eax*4] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 5
|
||
lea eax,[eax+eax*4] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 5
|
||
push ebx
|
||
mov ebx,[scaling_mode]
|
||
xor edx,edx
|
||
div ebx
|
||
|
||
; shl edx,1
|
||
; cmp edx,ebx
|
||
; jb @f
|
||
; inc eax
|
||
;@@:
|
||
|
||
pop ebx
|
||
|
||
mov cx,ax
|
||
|
||
call scaling.5
|
||
;******************************
|
||
pop eax
|
||
mov ebx,wa_high_1
|
||
mov [ebx],eax
|
||
|
||
pop eax
|
||
mov ebx,wa_width_1
|
||
mov [ebx],eax
|
||
;******************************
|
||
|
||
ret
|
||
;---------------------------------------------------------------------
|
||
zoom_minus:
|
||
; cmp [scaling_mode],dword 0
|
||
mov eax,[scaling_mode]
|
||
test eax,eax
|
||
; jz no_scaling.1
|
||
; jz calculation_next_value_minus
|
||
jnz @f
|
||
call calculation_next_value_minus
|
||
jmp zoom_plus.1
|
||
@@:
|
||
; je no_scaling.1
|
||
; jne @f
|
||
; mov [scaling_mode],dword 100
|
||
; mov [zoom_factors],dword zoom_factors.100
|
||
; call draw_zoom_factors
|
||
; jmp red
|
||
;@@:
|
||
mov eax,zoom_factors
|
||
cmp [eax],dword zoom_factors.min
|
||
jbe still
|
||
sub [eax],dword 4
|
||
jmp zoom_plus.1
|
||
;--------------------------------------------------------------------- |