2,9 → 2,7 |
;--------Move picture from array to work screeen----------- |
;---------------------------------------------------------- |
MovePictureToWorkScreen: |
|
call cleare_screen |
|
mov eax,[Picture_SizeX] |
mov ebx,[Picture_SizeY] |
mov ecx,[MaxWorkScreen_SizeX] |
12,25 → 10,27 |
mov esi,[k] |
imul eax,esi |
imul ebx,esi |
|
cmp eax,ecx |
jle lab1 |
|
mov eax,[MaxWorkScreen_SizeX] |
mov [WorkScreen_SizeX],eax |
jmp lab2 |
|
lab1: |
mov [WorkScreen_SizeX],eax |
|
lab2: |
|
cmp ebx,edx |
jle lab3 |
mov ebx,[MaxWorkScreen_SizeY] |
mov [WorkScreen_SizeY],ebx |
jmp lab4 |
|
lab3: |
mov [WorkScreen_SizeY],ebx |
|
lab4: |
|
mov eax,[WorkScreen_SizeX] |
mov ebx,[k] |
cdq |
49,7 → 49,7 |
imul eax,ebx |
sub ecx,eax |
lea ecx,[ecx+ecx*2] |
; |
|
mov eax,[WorkScreen_SizeX] |
mov ebx,[k] |
dec ebx |
58,7 → 58,6 |
add eax,ecx |
mov [OffsetYWorkScreen],eax |
|
|
mov ebx,[Picture_SizeX] |
mov eax,[CounterX] |
sub ebx,eax |
79,16 → 78,16 |
lea eax,[eax+eax*2] |
add eax,[PointerToPicture] |
|
|
mov ebx,[ScreenPointer] |
|
mov edi,[CounterY] |
|
;if size of picture natural(mastab is 1) than move picture to work screen |
cmp [k],1 |
jne no_zoom_1_ |
|
screen_y_1: |
mov esi,[CounterX] |
|
screen_x_1: |
mov ecx,[eax] |
and ecx,0xffffff |
105,13 → 104,14 |
dec edi |
jnz screen_y_1 |
jmp fps |
|
no_zoom_1_: |
|
cmp [k],2 |
jne no_zoom_2 |
|
screen_y_2: |
mov esi,[CounterX] |
|
screen_x_2: |
mov ecx,[eax] |
and ecx,0xffffff |
139,12 → 139,14 |
dec edi |
jnz screen_y_2 |
jmp fps |
|
no_zoom_2: |
|
cmp [k],4 |
jne no_zoom_4 |
|
screen_y_4: |
mov esi,[CounterX] |
|
screen_x_4: |
mov ecx,[eax] |
and ecx,0xffffff |
200,20 → 202,24 |
dec edi |
jnz screen_y_4 |
jmp fps |
|
no_zoom_4: |
;if zoom more than 4 |
screen_y: |
mov esi,[CounterX] |
|
screen_x: |
mov ecx,[eax] |
and ecx,0xffffff |
mov ebp,ecx |
shr ecx,16 |
push ebx |
push eax |
;--------------------------------------------------------- |
push ebx eax |
mov edx,[k] |
|
big_pixel_y: |
mov eax,[k] |
|
big_pixel_x: |
mov [ebx],bp |
mov [ebx+2],cl |
223,8 → 229,8 |
add ebx,[OffsetYBigPixel] |
dec edx |
jnz big_pixel_y |
pop eax |
pop ebx |
pop eax ebx |
;--------------------------------------------------------- |
mov edx,[k] |
lea edx,[edx+edx*2] |
add ebx,edx |
237,11 → 243,7 |
jnz screen_y |
|
fps: |
;mov eax,18 |
;mov ebx,14 |
;mcall |
|
mov eax,7 |
;mcall 18,14 |
mov ebx,[ScreenPointer] |
mov ecx,[WorkScreen_SizeX] |
mov edx,[WorkScreen_SizeY] |
248,14 → 250,13 |
shl ecx,16 |
add ecx,edx |
mov edx,8*65536+20+15+49+5+1 |
mcall |
|
mcall 7 |
ret |
;---------------------------------------------------------- |
;--------------------clear screen-------------------------- |
;---------------------------------------------------------- |
cleare_screen: |
|
mov eax,[ScreenPointer] |
mov ebx,[WorkScreen_SizeX] |
imul ebx,[WorkScreen_SizeY] |
265,12 → 266,10 |
mov esi,0xffffff |
|
clear_screen_loop: |
|
mov [eax],esi |
mov [eax+3],esi |
mov [eax+6],si |
add eax,4+4 |
|
dec ebx |
jnz clear_screen_loop |
ret |
278,7 → 277,6 |
;-------------cleare work arrea(work screen)--------------- |
;---------------------------------------------------------- |
cleare_work_arrea: |
|
mov eax,[PointerToPicture] |
mov ebx,[Picture_SizeX] |
imul ebx,[Picture_SizeY] |
288,12 → 286,10 |
mov esi,0xffffff |
|
clear_work_arrea_loop: |
|
mov [eax],esi |
mov [eax+3],esi |
mov [eax+6],si |
add eax,4+4 |
|
dec ebx |
jnz clear_work_arrea_loop |
ret |
301,7 → 297,6 |
;calculate position work screen on a picture |
;----------------------------------------------------------- |
CalculatePositionScreen: |
|
mov eax,[Picture_SizeX] |
mov ebx,[Picture_SizeY] |
mov ecx,[CounterX] |
308,38 → 303,35 |
mov edx,[CounterY] |
sub eax,ecx |
sub ebx,edx |
|
cmp [PosX],eax |
jle no_limit_screen_x |
mov [PosX],eax |
|
no_limit_screen_x: |
|
cmp [PosY],ebx |
jle no_limit_screen_y |
mov [PosY],ebx |
|
no_limit_screen_y: |
|
cmp [PosX],0 |
jns no_minimum_screen_x |
mov [PosX],0 |
|
no_minimum_screen_x: |
|
cmp [PosY],0 |
jns no_minimum_screen_y |
mov [PosY],0 |
|
no_minimum_screen_y: |
|
ret |
;----------------------------------------------------------- |
;-----------calculate cordinats on work picture-------------- |
;----------------------------------------------------------- |
GetScreenCordinats: |
|
mov eax,[MouseX] |
mov ebx,[MouseY] |
sub eax,9 |
sub ebx,87 |
|
mov ecx,[k] |
cdq |
idiv ecx |
348,5 → 340,4 |
cdq |
idiv ecx |
mov [ScreenY],eax |
|
ret |