Animage v1.3

1) Fixed window flicker when redrawing
2) Fixed memory leak for stack

git-svn-id: svn://kolibrios.org@1643 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2010-10-04 20:40:19 +00:00
parent 74199525db
commit bab525b2cf
12 changed files with 2070 additions and 2409 deletions

View File

@ -1,6 +1,12 @@
;******************************************************* ;*******************************************************
;**************GRAPHICS EDITOR ANIMAGE ***************** ;**************GRAPHICS EDITOR ANIMAGE *****************
;******************************************************* ;*******************************************************
; version: 1.3
; last update: 05/10/2010
; written by: Marat Zakiyanov aka Mario79, aka Mario
; changes: Fixed window flicker when redrawing,
; Fixed memory leak for stack
;--------------------------------------------------------
; version: 1.2 ; version: 1.2
; last update: 30/09/2010 ; last update: 30/09/2010
; written by: Marat Zakiyanov aka Mario79, aka Mario ; written by: Marat Zakiyanov aka Mario79, aka Mario
@ -69,7 +75,7 @@ include 'init_data.inc'
call drawwin call drawwin
;--------------------------------------------------------- ;---------------------------------------------------------
;---------Check loading of file from psrsmeters----------- ;---------Check loading of file from parameters-----------
;--------------------------------------------------------- ;---------------------------------------------------------
; mov eax,parameters ; mov eax,parameters
; mov ebx,file_path ; mov ebx,file_path
@ -98,15 +104,14 @@ include 'init_data.inc'
;---------------------------------------------------------- ;----------------------------------------------------------
;---------------------MAIN LOOP---------------------------- ;---------------------MAIN LOOP----------------------------
;---------------------------------------------------------- ;----------------------------------------------------------
red:
call drawwin
still: still:
call event call event
cmp eax,1 cmp eax,1
jne no_redraw_window je red
call drawwin
jmp still
no_redraw_window:
cmp eax,2 cmp eax,2
je keys je keys
@ -152,6 +157,7 @@ include 'memory.inc'
;------------variables and data of program------------------ ;------------variables and data of program------------------
;----------------------------------------------------------- ;-----------------------------------------------------------
sound_havent_memory db 150,64,0 sound_havent_memory db 150,64,0
include 'lib_data.inc' include 'lib_data.inc'
include 'panel_data.inc' include 'panel_data.inc'
include 'palitra256.inc' include 'palitra256.inc'
@ -306,13 +312,9 @@ IncludeUGlobals
align 4 align 4
CursorsID rd 10 CursorsID rd 10
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
;align 4
;parameters
; rb 257
;---------------------------------------------------------------------
align 4 align 4
file_path: file_path:
rb 4096 ;rb 1024+16 rb 4096
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
filename_area: filename_area:
@ -334,9 +336,6 @@ align 4
procinfo: procinfo:
rb 1024 rb 1024
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4
IPC_table rd 256
;---------------------------------------------------------------------
align 4 align 4
rb 4096 rb 4096
stacktop: stacktop:

View File

@ -1,11 +1,9 @@
;----------------------------------------------------- ;----------------------------------------------------------
draw_volume_rectangle: draw_volume_rectangle:
mov [line_x],eax mov [line_x],eax
mov [line_y],ebx mov [line_y],ebx
mov [line_size_x],ecx mov [line_size_x],ecx
mov [line_size_y],edx mov [line_size_y],edx
cmp esi,1 cmp esi,1
jne no_volume_light_rectangle jne no_volume_light_rectangle
@ -14,9 +12,8 @@ draw_volume_rectangle:
mov [color_line2],0xffffff mov [color_line2],0xffffff
mov [color_line3],0xc7cbcf mov [color_line3],0xc7cbcf
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_volume_light_rectangle: no_volume_light_rectangle:
cmp esi,2 cmp esi,2
jne no_pressed_rectangle jne no_pressed_rectangle
@ -24,11 +21,9 @@ draw_volume_rectangle:
mov [color_line1],0xaeabae mov [color_line1],0xaeabae
mov [color_line2],0x666666 mov [color_line2],0x666666
mov [color_line3],0x666666 mov [color_line3],0x666666
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_pressed_rectangle: no_pressed_rectangle:
cmp esi,3 cmp esi,3
jne no_pressed_panel jne no_pressed_panel
@ -37,9 +32,8 @@ draw_volume_rectangle:
mov [color_line2],7000 mov [color_line2],7000
mov [color_line3],0xffffff mov [color_line3],0xffffff
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_pressed_panel: no_pressed_panel:
cmp esi,4 cmp esi,4
jne no_pressed_light_panel jne no_pressed_light_panel
@ -48,9 +42,8 @@ draw_volume_rectangle:
mov [color_line2],7000 mov [color_line2],7000
mov [color_line3],0xffffff mov [color_line3],0xffffff
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_pressed_light_panel: no_pressed_light_panel:
cmp esi,5 cmp esi,5
jne no_light_pressed_rectangle jne no_light_pressed_rectangle
@ -58,11 +51,9 @@ draw_volume_rectangle:
mov [color_line1],0xaeabae mov [color_line1],0xaeabae
mov [color_line2],0x666666 mov [color_line2],0x666666
mov [color_line3],0x666666 mov [color_line3],0x666666
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_light_pressed_rectangle: no_light_pressed_rectangle:
cmp esi,6 cmp esi,6
jne no_work_rectangle jne no_work_rectangle
@ -71,9 +62,8 @@ draw_volume_rectangle:
mov [color_line2],0xc7cbcf mov [color_line2],0xc7cbcf
mov [color_line3],0xc7cbcf mov [color_line3],0xc7cbcf
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_work_rectangle: no_work_rectangle:
cmp esi,7 cmp esi,7
jne no_work_rectangle_2 jne no_work_rectangle_2
@ -82,9 +72,8 @@ draw_volume_rectangle:
mov [color_line2],0xc7cbcf mov [color_line2],0xc7cbcf
mov [color_line3],0xc7cbcf mov [color_line3],0xc7cbcf
jmp exit_colors jmp exit_colors
;----------------------------------------------------------
no_work_rectangle_2: no_work_rectangle_2:
exit_colors: exit_colors:
;draw rectangle ;draw rectangle
mov ebx,[line_x] mov ebx,[line_x]
@ -199,11 +188,9 @@ draw_volume_rectangle:
dec ecx dec ecx
dec ebx dec ebx
call draw_line call draw_line
ret ret
;---------------------------------------------------------- ;----------------------------------------------------------
rectangle: rectangle:
no_light_rectangle: no_light_rectangle:
mov [line_x],eax mov [line_x],eax
mov [line_y],ebx mov [line_y],ebx
@ -221,15 +208,11 @@ rectangle:
ret ret
;---------------------------------------------------------- ;----------------------------------------------------------
draw_conture: draw_conture:
mov [line_x],eax mov [line_x],eax
mov [line_y],ebx mov [line_y],ebx
mov [line_size_x],ecx mov [line_size_x],ecx
mov [line_size_y],edx mov [line_size_y],edx
mov [color_line1],0xaeabae mov [color_line1],0xaeabae
;line 1 ;line 1
mov edx,[color_line1] mov edx,[color_line1]
mov ebx,[line_x] mov ebx,[line_x]
@ -274,11 +257,9 @@ draw_conture:
add ebx,[line_size_x] add ebx,[line_size_x]
add ecx,[line_size_y] add ecx,[line_size_y]
call draw_line call draw_line
ret ret
;---------------------------------------------------------- ;----------------------------------------------------------
columnus: columnus:
sub eax,ecx sub eax,ecx
jns no_columnus jns no_columnus
neg eax neg eax
@ -307,8 +288,7 @@ print_text:
ret ret
;---------------------------------------------------------- ;----------------------------------------------------------
draw_rectangle: draw_rectangle:
mov eax,13 mcall 13
mcall
ret ret
;------------------------ ;------------------------
draw_line: draw_line:

View File

@ -2,9 +2,7 @@
;-------------interraction MOUSE-------------- ;-------------interraction MOUSE--------------
;--------------------------------------------- ;---------------------------------------------
mouse: mouse:
call GetMouseCoordinats call GetMouseCoordinats
;panel ;panel
mov edx,[Window_SizeX] mov edx,[Window_SizeX]
sub edx,5 sub edx,5
@ -22,23 +20,19 @@ mouse:
jae no_panel jae no_panel
call GetMouseCoordinats call GetMouseCoordinats
mov [counter],7 mov [counter],7
mov edi,panel_text mov edi,panel_text
call panel_interraction jmp panel_interraction
jmp still
no_panel: no_panel:
cmp [Panel_flag],0 cmp [Panel_flag],0
jz no_redraw_panel jz no_redraw_panel
mov [counter],7 mov [counter],7
mov edi,panel_text mov edi,panel_text
call panel_interraction jmp panel_interraction
no_redraw_panel: no_redraw_panel:
call GetMouseCoordinats call GetMouseCoordinats
mov eax,[MouseX] mov eax,[MouseX]
mov ebx,[MouseY] mov ebx,[MouseY]
@ -52,16 +46,12 @@ mouse:
cmp ebx,edx cmp ebx,edx
jae mouse_scroll jae mouse_scroll
jmp no_scrollers jmp no_scrollers
mouse_scroll: mouse_scroll:
mov [exit_from_work_arrea],1 ;mouse situated after work arrea mov [exit_from_work_arrea],1 ;mouse situated after work arrea
;scrollers ;scrollers
call GetMouseClick call GetMouseClick
cmp eax,1 cmp eax,1
jne no_click jne no_click
@ -74,11 +64,9 @@ mouse:
mov esi,[Scroll1MaxSizeX] mov esi,[Scroll1MaxSizeX]
mov edi,[Scroll1MaxSizeY] mov edi,[Scroll1MaxSizeY]
call columnus call columnus
test eax,eax test eax,eax
jz no_horizontal jz no_horizontal
mov eax,9 mov eax,9
mov ebx,[Scroll1CoordinatY] mov ebx,[Scroll1CoordinatY]
mov ecx,[Scroll1MaxSizeX] mov ecx,[Scroll1MaxSizeX]
@ -96,14 +84,12 @@ mouse:
mov edx,8+1 mov edx,8+1
add edx,[Scroll1MaxSizeX] add edx,[Scroll1MaxSizeX]
mov [Scroll1CoordinatX],eax mov [Scroll1CoordinatX],eax
sub eax,9 sub eax,9
jns no_min_scroll jns no_min_scroll
mov [Scroll1CoordinatX],9 mov [Scroll1CoordinatX],9
no_min_scroll: no_min_scroll:
cmp ecx,edx cmp ecx,edx
jl no_max_scroll jl no_max_scroll
@ -112,7 +98,6 @@ mouse:
mov [Scroll1CoordinatX],edx mov [Scroll1CoordinatX],edx
no_max_scroll: no_max_scroll:
;
mov eax,[Scroll1CoordinatX] mov eax,[Scroll1CoordinatX]
sub eax,9 sub eax,9
mov ebx,[Picture_SizeX] mov ebx,[Picture_SizeX]
@ -121,11 +106,9 @@ mouse:
cdq cdq
idiv ebx idiv ebx
mov [PosX],eax mov [PosX],eax
jmp no_vertical jmp no_vertical
no_horizontal: no_horizontal:
mov eax,[Scroll2CoordinatX] mov eax,[Scroll2CoordinatX]
mov ebx,[Scroll2CoordinatY] mov ebx,[Scroll2CoordinatY]
mov ecx,[MouseX] mov ecx,[MouseX]
@ -133,7 +116,6 @@ mouse:
mov esi,[Scroll2MaxSizeX] mov esi,[Scroll2MaxSizeX]
mov edi,[Scroll2MaxSizeY] mov edi,[Scroll2MaxSizeY]
call columnus call columnus
test eax,eax test eax,eax
jz no_vertical jz no_vertical
@ -161,7 +143,6 @@ mouse:
mov [Scroll2CoordinatY],89 mov [Scroll2CoordinatY],89
no_min_scroll2: no_min_scroll2:
cmp ecx,edx cmp ecx,edx
jl no_max_scroll2 jl no_max_scroll2
@ -170,7 +151,6 @@ mouse:
mov [Scroll2CoordinatY],edx mov [Scroll2CoordinatY],edx
no_max_scroll2: no_max_scroll2:
;
mov eax,[Scroll2CoordinatY] mov eax,[Scroll2CoordinatY]
sub eax,89 sub eax,89
mov ebx,[Picture_SizeY] mov ebx,[Picture_SizeY]
@ -181,18 +161,14 @@ mouse:
mov [PosY],eax mov [PosY],eax
no_vertical: no_vertical:
call CalculatePositionScreen call CalculatePositionScreen
call draw_scrollers call draw_scrollers
call MovePictureToWorkScreen call MovePictureToWorkScreen
no_click: no_click:
jmp still jmp still
no_scrollers: no_scrollers:
mov eax,[MouseX] mov eax,[MouseX]
mov ebx,[MouseY] mov ebx,[MouseY]
mov ecx,[Window_SizeX] mov ecx,[Window_SizeX]
@ -211,46 +187,35 @@ mouse:
cmp ebx,edx cmp ebx,edx
jae not_work_arrea jae not_work_arrea
jmp mouse_in_work_arrea jmp mouse_in_work_arrea
not_work_arrea: not_work_arrea:
mov [exit_from_work_arrea],1 mov [exit_from_work_arrea],1
jmp still jmp still
mouse_in_work_arrea: mouse_in_work_arrea:
call GetScreenCordinats call GetScreenCordinats
call PrintMousePos call PrintMousePos
call GetMouseClick call GetMouseClick
test eax,eax test eax,eax
jz no_use_instruments jz no_use_instruments
cmp [Activate_instrument],0 cmp [Activate_instrument],0
jnz no_undo___ jnz no_undo___
;------------begin copy for undo------------- ;------------begin copy for undo-------------
inc [number_undo] inc [number_undo]
cmp [number_undo],1 cmp [number_undo],1
jne no_one__ jne no_one__
mov edi,[PointerToCopyPicture] mov edi,[PointerToCopyPicture]
no_one__: no_one__:
cmp [number_undo],2 cmp [number_undo],2
jne no_two__ jne no_two__
mov edi,[PointerToCopyPicture2] mov edi,[PointerToCopyPicture2]
no_two__: no_two__:
cmp [number_undo],3 cmp [number_undo],3
jne no_three__ jne no_three__
@ -270,7 +235,6 @@ mouse:
mov edi,[PointerToCopyPicture2] mov edi,[PointerToCopyPicture2]
no_three__: no_three__:
mov esi,[PointerToPicture] mov esi,[PointerToPicture]
mov ecx,[Picture_SizeX] mov ecx,[Picture_SizeX]
imul ecx,[Picture_SizeY] imul ecx,[Picture_SizeY]
@ -282,37 +246,26 @@ mouse:
rep movsd rep movsd
;--------------end copy for undo------------- ;--------------end copy for undo-------------
no_undo___: no_undo___:
call TakeButtonInstruments call TakeButtonInstruments
no_use_instruments:
no_use_instruments:
mov eax,[Current_instrument] mov eax,[Current_instrument]
and [Activate_instrument],0 and [Activate_instrument],0
jmp still jmp still
;----------------------------------------------- ;-----------------------------------------------
;---------get mouse cordinats------------------- ;---------get mouse cordinats-------------------
;----------------------------------------------- ;-----------------------------------------------
GetMouseCoordinats: GetMouseCoordinats:
mcall 37,1
mov eax,37
mov ebx,1
mcall
mov ebx,eax mov ebx,eax
shr eax,16 shr eax,16
and ebx,0xffff and ebx,0xffff
mov [MouseX],eax mov [MouseX],eax
mov [MouseY],ebx mov [MouseY],ebx
ret ret
;------------------------------------------------ ;------------------------------------------------
;-------get mouse attributs---------------------- ;-------get mouse attributs----------------------
;------------------------------------------------ ;------------------------------------------------
GetMouseClick: GetMouseClick:
mov eax,37 mcall 37,2
mov ebx,2
mcall
ret ret

View File

@ -2,16 +2,14 @@
;-------------draw window of program----------------------- ;-------------draw window of program-----------------------
;---------------------------------------------------------- ;----------------------------------------------------------
drawwin: drawwin:
mov eax,9
mov ebx,IPC_table
or ecx,-1 or ecx,-1
mcall mcall 9,procinfo
mov esi,procinfo
mov eax,[IPC_table+34] mov eax,[esi+34]
mov ebx,[IPC_table+38] mov ebx,[esi+38]
mov ecx,[IPC_table+42] mov ecx,[esi+42]
mov edx,[IPC_table+46] mov edx,[esi+46]
mov [Window_CordinatX],eax mov [Window_CordinatX],eax
mov [Window_CordinatY],ebx mov [Window_CordinatY],ebx
mov [Window_SizeX],ecx mov [Window_SizeX],ecx
@ -24,7 +22,6 @@ drawwin:
mov ecx,[Window_SizeX] mov ecx,[Window_SizeX]
no_minimum_size_x: no_minimum_size_x:
cmp [Window_SizeY],400 cmp [Window_SizeY],400
jae no_minimum_size_y jae no_minimum_size_y
@ -32,7 +29,6 @@ drawwin:
mov edx,[Window_SizeY] mov edx,[Window_SizeY]
no_minimum_size_y: no_minimum_size_y:
mov [MaxWorkScreen_SizeX],ecx mov [MaxWorkScreen_SizeX],ecx
mov [MaxWorkScreen_SizeY],edx mov [MaxWorkScreen_SizeY],edx
sub [MaxWorkScreen_SizeX],20+10+5+10 sub [MaxWorkScreen_SizeX],20+10+5+10
@ -44,7 +40,6 @@ drawwin:
mov [MaxWorkScreen_SizeX],ecx mov [MaxWorkScreen_SizeX],ecx
no_znak1: no_znak1:
cmp [MaxWorkScreen_SizeY],0 cmp [MaxWorkScreen_SizeY],0
jns no_znak2 jns no_znak2
@ -52,53 +47,121 @@ drawwin:
no_znak2: no_znak2:
mov eax,12 mcall 12,1
mov ebx,1 ;------------------------------------------------
mcall
and eax,0
mov ebx,[Window_CordinatX] mov ebx,[Window_CordinatX]
mov ecx,[Window_CordinatY] mov ecx,[Window_CordinatY]
shl ebx,16 shl ebx,16
shl ecx,16 shl ecx,16
add ebx,[Window_SizeX] add ebx,[Window_SizeX]
add ecx,[Window_SizeY] add ecx,[Window_SizeY]
mov edx,0x43aabbcc
xor esi,esi ;0x805080d0 xor esi,esi ;0x805080d0
xor edi,edi ;0x005080d0 ; xor edi,edi ;0x005080d0
mcall mcall 0,,,0x53aabbcc,,name_of_program
;------------------------------------------------
call draw_panel mov eax,5
call PrintMousePos mov ebx,20
mov ecx,[Window_SizeX]
mov edx,15
mov esi,6
sub ecx,10
call draw_volume_rectangle ; top menu - file and etc.
mov [counter],7 mov [counter],7
mov edi,panel_text mov edi,panel_text
call print_panel_text call print_panel_text
;------------------------------------------------
;>>>>>>Leency mov eax,5
;mov eax,10 mov ebx,20+15+1
;mov ebx,5 mov ecx,[Window_SizeX]
;mov ecx,0xffffff mov edx,50
;mov edx,name_of_program mov esi,1
;mov esi,34 sub ecx,10
;call print_text call draw_volume_rectangle ; tools panel
call draw_icons
mov eax,71 call PrintMousePos
mov ebx,1 ;------------------------------------------------
mov ecx,name_of_program
int 40h
;Leency<<<<<<<
mov eax,12
mov ebx,2
mcall
mov ecx,[k] mov ecx,[k]
and [PosX],0 and [PosX],0
and [PosY],0 and [PosY],0
call MovePictureToWorkScreen call MovePictureToWorkScreen
call draw_scrollers ;------------------------------------------------
call draw_icons mov ebx,[WorkScreen_SizeX]
add ebx,5+3
mov edx,[Window_SizeX]
sub edx,ebx
sub edx,25+10-3
shl ebx,16
mov bx,dx
mov ecx,20+15+1+49+2
mov edx,[Window_SizeY]
mov eax,[WorkScreen_SizeY]
shr eax,16
sub edx,eax
sub edx,20+15+1+49+2+25+10
shl ecx,16
mov cx,dx
mcall 13,,,0xc7cbcf
;------------------------------------------------
mcall ,<5,3>
;------------------------------------------------
mov ebx,5
mov edx,[Window_SizeX]
mov eax,[WorkScreen_SizeX]
shr eax,16
sub edx,eax
sub edx,25+10
shl ebx,16
mov bx,dx
mov ecx,[WorkScreen_SizeY]
add ecx,20+15+1+49+2+3
mov edx,[Window_SizeY]
sub edx,ecx
sub edx,25+10-3
shl ecx,16
mov cx,dx
mcall 13,,,0xc7cbcf
;------------------------------------------------
mcall ,,<20+15+1+49+2,3>
;------------------------------------------------
; draw_volume_rectangle
; eax - start X
; ebx - start Y
; ecx - size X
; edx - size Y
mov eax,5
mov ebx,[Window_SizeY]
mov ecx,[Window_SizeX]
mov edx,20+10
mov esi,3
sub ecx,30
sub ebx,25+10
call draw_volume_rectangle ; horizontal scrollbar
;------------------------------------------------
mov eax,[Window_SizeX]
mov ebx,20+15+1+49+2
mov ecx,20+10
mov edx,[Window_SizeY]
mov esi,3
sub eax,25+10
sub edx,20+15+1+49+5+20
call draw_volume_rectangle ; vertical scrollbar
call draw_scrollers
;------------------------------------------------
mov eax,[Window_SizeX]
mov ebx,[Window_SizeY]
mov ecx,20+10
mov edx,20+10
mov esi,6
sub eax,25+10
sub ebx,25+10
call draw_volume_rectangle ; down and right small area
;------------------------------------------------
mcall 12,2
ret ret
;-----------------------------------------------------------------------------

View File

@ -17,15 +17,6 @@
mov [Picture_SizeY],400;280 mov [Picture_SizeY],400;280
mov [k],1 mov [k],1
; mov [ScreenPointer],0x19000
; mov [PointerToPicture],0x19000+(1200*1000*3)+50*(20*20*3)+500000
; mov [PointerToCopyPicture],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)
; mov [PointerToCopyPicture2],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)*2
; mov [PointerToEditBufer],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)*3
; mov [PointerToSpriteBufer],0x19000+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3)*4
; mov [PointerToPalette],0x19000+(1200*100*3)+50*(20*20*3)+1
; mov [ReserveArray],0x19000+(1200*1000)*3+50*(20*20*3)+8
; mov [ScreenPointer],I_END ; S = 0, L = 3600000 + 60000 + 500000 = 4160000 = 3,97 Mb ; mov [ScreenPointer],I_END ; S = 0, L = 3600000 + 60000 + 500000 = 4160000 = 3,97 Mb
; mov [PointerToPicture], I_END+(1200*1000*3)+50*(20*20*3)+500000 ; S = 4160000, L = 768000 = 750 Kb ; mov [PointerToPicture], I_END+(1200*1000*3)+50*(20*20*3)+500000 ; S = 4160000, L = 768000 = 750 Kb
; mov [PointerToCopyPicture], I_END+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3) ; S = 4928000, L = 768000 = 750 Kb ; mov [PointerToCopyPicture], I_END+(1200*1000*3)+50*(20*20*3)+500000+(640*400*3) ; S = 4928000, L = 768000 = 750 Kb
@ -46,17 +37,4 @@
and [number_undo],0 and [number_undo],0
and [instrument_used],0 and [instrument_used],0
and [DrawSprite_flag],0 and [DrawSprite_flag],0
; and [extended_memory],0
;mov eax,68
;mov ebx,11
;mcall
;mov eax,68
;mov ebx,12
;mov ecx,60000
;mcall
;mov [PointerToIcons],eax
finit finit

View File

@ -1,33 +1,6 @@
;loading file from parameters if parametrs <> 0
;IN
; eax- pointer to parameters
; ebx- pointer to path of file
;OUT
;value not returned
;check_loading_from_parameters:
; cmp [eax],byte 0
; jz no_parameters
;copy file name
; mov esi,eax
; mov edi,ebx
; mov ecx,256
; rep movsb
;load file in memory
; call load_picture
; no_parameters:
; ret
; load picture from file to memory ; load picture from file to memory
load_picture: load_picture:
mov eax,file_path mov eax,file_path
mov ebx,[ScreenPointer] mov ebx,[ScreenPointer]
add ebx,0x10000 add ebx,0x10000
@ -50,16 +23,13 @@ load_picture:
mov ebx,[esi+22] mov ebx,[esi+22]
mov [Picture_SizeX],eax mov [Picture_SizeX],eax
mov [Picture_SizeY],ebx mov [Picture_SizeY],ebx
jmp exit_type_1 jmp exit_type_1
no_bmp_file_1: no_bmp_file_1:
;-------------is this GIF file ?---------------- ;-------------is this GIF file ?----------------
xor eax,eax xor eax,eax
mov ax,[esi] mov ax,[esi]
mov [type],ax mov [type],ax
cmp [type],'GI' cmp [type],'GI'
jne no_gif_file_1 jne no_gif_file_1
@ -70,20 +40,16 @@ load_picture:
mov bx,word[esi+2] mov bx,word[esi+2]
mov [Picture_SizeX],eax mov [Picture_SizeX],eax
mov [Picture_SizeY],ebx mov [Picture_SizeY],ebx
jmp exit_type_1 jmp exit_type_1
no_gif_file_1: no_gif_file_1:
jmp no_unpakcing_file_1 jmp no_unpakcing_file_1
exit_type_1: exit_type_1:
;---------------------------------------------------------- ;----------------------------------------------------------
;Get momory for unpacking picture and for picture's bufers ;Get momory for unpacking picture and for picture's bufers
;---------------------------------------------------------- ;----------------------------------------------------------
call GetMemory call GetMemory
;---------------------------------------------------------- ;----------------------------------------------------------
;--------------------Load file in memory------------------- ;--------------------Load file in memory-------------------
;---------------------------------------------------------- ;----------------------------------------------------------
@ -91,7 +57,6 @@ load_picture:
mov eax,file_path mov eax,file_path
mov ebx,[PointerToCopyPicture] mov ebx,[PointerToCopyPicture]
add ebx,1000 add ebx,1000
call load_file call load_file
;---------------------------------------------------------- ;----------------------------------------------------------
@ -101,25 +66,23 @@ load_picture:
add esi,1000 add esi,1000
mov edi,[PointerToPicture] mov edi,[PointerToPicture]
mov eax,[ScreenPointer] mov eax,[ScreenPointer]
cmp [type],'BM' cmp [type],'BM'
jne no_unpakcing_bmp_file_1 jne no_unpakcing_bmp_file_1
;BMP DECODER ;BMP DECODER
call bmptoimg call bmptoimg
mov [save_flag],1 mov [save_flag],1
jmp no_unpakcing_file_1
no_unpakcing_bmp_file_1: no_unpakcing_bmp_file_1:
cmp [type],'GI' cmp [type],'GI'
jne no_unpakcing_file_1 jne no_unpakcing_file_1
;GIF DECODER ;GIF DECODER
sub edi,8 sub edi,8
call ReadGIF call ReadGIF
mov [save_flag],1 mov [save_flag],1
no_unpakcing_file_1: no_unpakcing_file_1:
call MovePictureToWorkScreen call MovePictureToWorkScreen
mov [Scroll1CoordinatX],9 mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89 mov [Scroll2CoordinatY],89
ret ret

View File

@ -1,30 +1,8 @@
;---------------------------------------------------------- ;----------------------------------------------------------
;--------change size of memory which use program----------- ;--------change size of memory which use program-----------
;---------------------------------------------------------- ;----------------------------------------------------------
;GetMemory:
; pushad
; mov eax,64
; mov ebx,1
; mov ecx,[Picture_SizeX]
; mov edx,[Picture_SizeY]
; imul ecx,edx
; lea ecx,[ecx+ecx*2]
; lea ecx,[ecx+ecx*4] ;(Picture_SizeX*Picture_SizeY*3)*5
; add ecx,[ScreenPointer]
; add ecx,(1200*1000)*3+50*(20*20*3)+500000+16000+0x4000 ; 4192384
; add ecx,[extended_memory]
; mcall
; test eax,eax
; jz have_new_memory
; mov esi,sound_havent_memory
; call sound
; jmp still
;have_new_memory:
; popad
; ret
GetMemory: GetMemory:
pushad pusha
mov ecx,[Picture_SizeX] mov ecx,[Picture_SizeX]
mov edx,[Picture_SizeY] mov edx,[Picture_SizeY]
imul ecx,edx imul ecx,edx
@ -36,13 +14,14 @@ GetMemory:
jnz have_new_memory jnz have_new_memory
mov esi,sound_havent_memory mov esi,sound_havent_memory
call sound call sound
pushad popa
add esp,4
jmp still jmp still
have_new_memory: have_new_memory:
mov [ScreenPointer],eax mov [ScreenPointer],eax
call prepare_data_pointers call prepare_data_pointers
popad popa
ret ret
;--------------------------------------------------------- ;---------------------------------------------------------
prepare_data_pointers: prepare_data_pointers:
@ -72,5 +51,13 @@ prepare_data_pointers:
add [PointerToSpriteBufer],eax add [PointerToSpriteBufer],eax
add [PointerToSpriteBufer],eax add [PointerToSpriteBufer],eax
add [PointerToSpriteBufer],eax add [PointerToSpriteBufer],eax
mov eax,[ScreenPointer]
add eax,(1200*100*3)+50*(20*20*3)+1
mov [PointerToPalette],eax
mov eax,[ScreenPointer]
add eax,(1200*1000)*3+50*(20*20*3)+8
mov [ReserveArray],eax
ret ret
;--------------------------------------------------------- ;---------------------------------------------------------

View File

@ -2,7 +2,6 @@
;-----------instruments of menu----------------------------- ;-----------instruments of menu-----------------------------
;----------------------------------------------------------- ;-----------------------------------------------------------
TakeInstruments: TakeInstruments:
;|||||||||||||||||||FILE|||||||||||||||||||||| ;|||||||||||||||||||FILE||||||||||||||||||||||
cmp [number_panel],7 cmp [number_panel],7
jne no_file jne no_file
@ -60,31 +59,17 @@ TakeInstruments:
mov esi,2 mov esi,2
call print_text call print_text
mov eax,8 mov edx,1000000000000000000000000000000b+1000
mov ebx,177*65536+40 mcall 8,<177,40>,<115,14>,
mov ecx,115*65536+14
mov edx,1000000000000000000000000000000b
add edx,1000
mcall
mov eax,8 mov edx,1000000000000000000000000000000b+1001
mov ebx,177*65536+40 mcall ,,<139,14>,
mov ecx,139*65536+14
mov edx,1000000000000000000000000000000b
add edx,1001
mcall
mov eax,8 mov edx,1000000000000000000000000000000b+1002
mov ebx,175*65536+40 mcall ,<175,40>,<170,15>
mov ecx,170*65536+15
mov edx,1000000000000000000000000000000b
add edx,1002
mcall
no_activate_space: no_activate_space:
mcall 10
mov eax,10
mcall
cmp eax,1 cmp eax,1
je exit_new je exit_new
@ -92,8 +77,7 @@ TakeInstruments:
cmp eax,3 cmp eax,3
jne no_activate_space jne no_activate_space
mov eax,17 mcall 17
mcall
shr eax,8 shr eax,8
cmp eax,1000 cmp eax,1000
@ -117,11 +101,9 @@ TakeInstruments:
call value call value
mov [Picture_SizeX],eax mov [Picture_SizeX],eax
jmp no_activate_space jmp no_activate_space
;---------------------------------------------------------------------
no_picture_size_x: no_picture_size_x:
cmp eax,1001 cmp eax,1001
jne no_picture_size_y jne no_picture_size_y
@ -140,39 +122,23 @@ TakeInstruments:
call value call value
mov [Picture_SizeY],eax mov [Picture_SizeY],eax
jmp no_activate_space jmp no_activate_space
;---------------------------------------------------------------------
no_picture_size_y: no_picture_size_y:
cmp eax,1002 cmp eax,1002
jne no_activate_space jne no_activate_space
exit_new: exit_new:
mov edx,11100000000000000000000000000000b+1002
mcall 8,<175,40>,<170,15>
mov eax,8 mov edx,11100000000000000000000000000000b+1001
mov ebx,175*65536+40 mcall ,<177,40>,<139,14>
mov ecx,170*65536+15
mov edx,11100000000000000000000000000000b
add edx,1002
mcall
mov eax,8 mov edx,11100000000000000000000000000000b+1000
mov ebx,177*65536+40 mcall ,,<115,14>
mov ecx,139*65536+14
mov edx,11100000000000000000000000000000b
add edx,1001
mcall
mov eax,8
mov ebx,177*65536+40
mov ecx,115*65536+14
mov edx,11100000000000000000000000000000b
add edx,1000
mcall
;get memory for new picture ;get memory for new picture
call GetMemory call GetMemory
and [save_flag],0 and [save_flag],0
@ -181,10 +147,9 @@ TakeInstruments:
call cleare_work_arrea call cleare_work_arrea
call drawwin call drawwin
jmp still jmp still
;---------------------------------------------------------------------
no_new: no_new:
;<<<<<OPEN>>>>>>> ;<<<<<OPEN>>>>>>>
cmp [number_menu],2 cmp [number_menu],2
jne no_open jne no_open
@ -199,12 +164,8 @@ TakeInstruments:
cmp [OpenDialog_data.status],1 cmp [OpenDialog_data.status],1
jne still jne still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
open_1: open_1:
mcall 40,100111b
mov eax,40
mov ebx,100111b
mcall
mov eax,file_path mov eax,file_path
mov ebx,[ScreenPointer] mov ebx,[ScreenPointer]
@ -228,11 +189,9 @@ TakeInstruments:
mov ebx,[esi+22] mov ebx,[esi+22]
mov [Picture_SizeX],eax mov [Picture_SizeX],eax
mov [Picture_SizeY],ebx mov [Picture_SizeY],ebx
jmp exit_type jmp exit_type
;---------------------------------------------------------------------
no_bmp_file: no_bmp_file:
;-------------is this GIF file ?---------------- ;-------------is this GIF file ?----------------
xor eax,eax xor eax,eax
mov ax,[esi] mov ax,[esi]
@ -248,15 +207,12 @@ TakeInstruments:
mov bx,word[esi+2] mov bx,word[esi+2]
mov [Picture_SizeX],eax mov [Picture_SizeX],eax
mov [Picture_SizeY],ebx mov [Picture_SizeY],ebx
jmp exit_type jmp exit_type
;---------------------------------------------------------------------
no_gif_file: no_gif_file:
jmp no_unpakcing_file jmp no_unpakcing_file
;---------------------------------------------------------------------
exit_type: exit_type:
;---------------------------------------------------------- ;----------------------------------------------------------
;Get momory for unpacking picture and for picture's bufers ;Get momory for unpacking picture and for picture's bufers
;---------------------------------------------------------- ;----------------------------------------------------------
@ -264,13 +220,10 @@ TakeInstruments:
;---------------------------------------------------------- ;----------------------------------------------------------
;--------------------Load file in memory------------------- ;--------------------Load file in memory-------------------
;---------------------------------------------------------- ;----------------------------------------------------------
mov eax,file_path mov eax,file_path
mov ebx,[PointerToCopyPicture] mov ebx,[PointerToCopyPicture]
add ebx,1000 add ebx,1000
call load_file call load_file
;---------------------------------------------------------- ;----------------------------------------------------------
;-------------------Unpacking picture---------------------- ;-------------------Unpacking picture----------------------
;---------------------------------------------------------- ;----------------------------------------------------------
@ -282,56 +235,50 @@ TakeInstruments:
cmp [type],'BM' cmp [type],'BM'
jne no_unpakcing_bmp_file jne no_unpakcing_bmp_file
;BMP DECODER ;BMP DECODER
call bmptoimg call bmptoimg
mov [save_flag],1 mov [save_flag],1
jmp draw_1 jmp draw_1
;---------------------------------------------------------------------
no_unpakcing_bmp_file: no_unpakcing_bmp_file:
cmp [type],'GI' cmp [type],'GI'
jne no_unpakcing_file jne no_unpakcing_file
;GIF DECODER ;GIF DECODER
sub edi,8 sub edi,8
call ReadGIF
mov [save_flag],1
no_unpakcing_file:
call ReadGIF
mov [save_flag],1
jmp draw_1
;---------------------------------------------------------------------
no_unpakcing_file:
call load_icons call load_icons
draw_1: draw_1:
call drawwin call drawwin
open_2: open_2:
mov [Scroll1CoordinatX],9 mov [Scroll1CoordinatX],9
mov [Scroll2CoordinatY],89 mov [Scroll2CoordinatY],89
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
jmp still jmp still
;---------------------------------------------------------------------
no_open: no_open:
;<<<<<<<<<<<SAVE>>>>>>>>>>>> ;<<<<<<<<<<<SAVE>>>>>>>>>>>>
cmp [number_menu],3 cmp [number_menu],3
jne no_save_ jne no_save_
mov al,[save_flag] mov al,[save_flag]
test al,al test al,al
jz no_save_file jz no_save_file
jmp save_enter jmp save_enter
;---------------------------------------------------------------------
no_save_file: no_save_file:
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
jmp still jmp still
;---------------------------------------------------------------------
no_save_: no_save_:
;<<<<<<<<<SAVE AS>>>>>>>>>>> ;<<<<<<<<<SAVE AS>>>>>>>>>>>
cmp [number_menu],4 cmp [number_menu],4
jne no_save jne no_save
@ -362,15 +309,12 @@ draw_1:
cmp [OpenDialog_data.status],1 cmp [OpenDialog_data.status],1
jne still jne still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
save1: save1:
save_enter: save_enter:
mov eax,40 mcall 40,100111b
mov ebx,100111b
mcall
call analizing_picture_to_palette call analizing_picture_to_palette
;eax => number of colors in picture ;eax => number of colors in picture
mov ebx,[PointerToPicture] mov ebx,[PointerToPicture]
mov ecx,[PointerToEditBufer] mov ecx,[PointerToEditBufer]
@ -383,9 +327,6 @@ draw_1:
mov eax,file_path mov eax,file_path
mov ecx,ebx mov ecx,ebx
mov ebx,[PointerToEditBufer] mov ebx,[PointerToEditBufer]
push eax
push ebx
push ecx
call save_file call save_file
@ -393,33 +334,27 @@ draw_1:
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
call drawwin call drawwin
jmp still
save2:
and [number_panel],0
and [number_menu],0
jmp still jmp still
;---------------------------------------------------------------------
;save2:
; and [number_panel],0
; and [number_menu],0
; jmp still
;---------------------------------------------------------------------
no_save: no_save:
;<<<<<<EXIT>>>>>>> ;<<<<<<EXIT>>>>>>>
cmp [number_menu],5 cmp [number_menu],5
jne no_exit_program jne no_exit_program
mov eax,-1 mov eax,-1
mcall mcall
;---------------------------------------------------------------------
no_exit_program: no_exit_program:
no_file: no_file:
;|||||||||||||||||||||||||||||EDIT||||||||||||||||||||||||| ;|||||||||||||||||||||||||||||EDIT|||||||||||||||||||||||||
;<<<<<<<<<<UNDO>>>>>>>>>> ;<<<<<<<<<<UNDO>>>>>>>>>>
cmp [number_panel],6 cmp [number_panel],6
jne no_edit jne still ;no_edit
cmp [number_menu],1 cmp [number_menu],1
jne no_undo jne no_undo
@ -430,14 +365,12 @@ draw_1:
mov esi,[PointerToCopyPicture] mov esi,[PointerToCopyPicture]
no_one____: no_one____:
cmp [number_undo],2 cmp [number_undo],2
jne no_two____ jne no_two____
mov esi,[PointerToCopyPicture2] mov esi,[PointerToCopyPicture2]
no_two____: no_two____:
mov edi,[PointerToPicture] mov edi,[PointerToPicture]
mov ecx,[Picture_SizeX] mov ecx,[Picture_SizeX]
imul ecx,[Picture_SizeY] imul ecx,[Picture_SizeY]
@ -454,14 +387,12 @@ draw_1:
mov [number_undo],1 mov [number_undo],1
no_null_undo: no_null_undo:
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
jmp still jmp still
;---------------------------------------------------------------------
no_undo: no_undo:
;<<<<<<<<<<COPY>>>>>>>>>> ;<<<<<<<<<<COPY>>>>>>>>>>
cmp [number_menu],2 cmp [number_menu],2
jne no_copy jne no_copy
@ -481,7 +412,6 @@ draw_1:
mov [rectangular_shade_x],eax mov [rectangular_shade_x],eax
no_remove_x_copy: no_remove_x_copy:
cmp ebx,[rectangular_shade_y] cmp ebx,[rectangular_shade_y]
jl no_remove_y_copy jl no_remove_y_copy
@ -490,7 +420,6 @@ draw_1:
mov [rectangular_shade_y],ebx mov [rectangular_shade_y],ebx
no_remove_y_copy: no_remove_y_copy:
mov eax,[OldX] mov eax,[OldX]
mov ebx,[OldY] mov ebx,[OldY]
mov ecx,[rectangular_shade_x] mov ecx,[rectangular_shade_x]
@ -513,42 +442,34 @@ draw_1:
mov [Dx_],-1 mov [Dx_],-1
no_signum_fill_r_x_copy: no_signum_fill_r_x_copy:
sub edx,ebx sub edx,ebx
jnz no_signum_fill_r_y_copy jnz no_signum_fill_r_y_copy
mov [Dy_],-1 mov [Dy_],-1
no_signum_fill_r_y_copy: no_signum_fill_r_y_copy:
mov ebx,[rectangular_shade_y] mov ebx,[rectangular_shade_y]
sub ebx,edi sub ebx,edi
mov edx,[PointerToEditBufer] mov edx,[PointerToEditBufer]
mov [y],edi mov [y],edi
loop_fill_rectangle_y_copy: loop_fill_rectangle_y_copy:
mov [x],esi mov [x],esi
loop_fill_rectangle_x_copy: loop_fill_rectangle_x_copy:
push esi edi
push esi
push edi
mov eax,[PointerToPicture] mov eax,[PointerToPicture]
mov ebx,[Picture_SizeX] mov ebx,[Picture_SizeX]
mov esi,[x] mov esi,[x]
mov edi,[y] mov edi,[y]
call GetColorOfPixel call GetColorOfPixel
mov [edx],ax mov [edx],ax
shr eax,16 shr eax,16
mov [edx+2],al mov [edx+2],al
pop edi esi
pop edi
pop esi
add edx,3 add edx,3
mov eax,[x] mov eax,[x]
add eax,[Dx_] add eax,[Dx_]
mov [x],eax mov [x],eax
@ -568,11 +489,9 @@ draw_1:
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
mov [DrawSprite_flag],1 mov [DrawSprite_flag],1
jmp still jmp still
;---------------------------------------------------------------------
no_copy: no_copy:
;<<<<<<<<<<PASTE>>>>>>>> ;<<<<<<<<<<PASTE>>>>>>>>
cmp [number_menu],3 cmp [number_menu],3
jne no_paste jne no_paste
@ -594,7 +513,6 @@ draw_1:
mov [rectangular_shade_x],eax mov [rectangular_shade_x],eax
no_remove_x_paste: no_remove_x_paste:
cmp ebx,[rectangular_shade_y] cmp ebx,[rectangular_shade_y]
jl no_remove_y_paste jl no_remove_y_paste
@ -603,7 +521,6 @@ draw_1:
mov [rectangular_shade_y],ebx mov [rectangular_shade_y],ebx
no_remove_y_paste: no_remove_y_paste:
mov eax,[OldX] mov eax,[OldX]
mov ebx,[OldY] mov ebx,[OldY]
mov ecx,[rectangular_shade_x] mov ecx,[rectangular_shade_x]
@ -626,36 +543,28 @@ draw_1:
mov [Dx_],-1 mov [Dx_],-1
no_signum_fill_r_x_paste: no_signum_fill_r_x_paste:
sub edx,ebx sub edx,ebx
jnz no_signum_fill_r_y_paste jnz no_signum_fill_r_y_paste
mov [Dy_],-1 mov [Dy_],-1
no_signum_fill_r_y_paste: no_signum_fill_r_y_paste:
mov edx,[PointerToEditBufer] mov edx,[PointerToEditBufer]
mov [y],edi mov [y],edi
loop_fill_rectangle_y_paste: loop_fill_rectangle_y_paste:
mov [x],esi mov [x],esi
loop_fill_rectangle_x_paste: loop_fill_rectangle_x_paste:
push esi edi
push esi
push edi
mov ecx,[edx] mov ecx,[edx]
and ecx,0xffffff ;color and ecx,0xffffff ;color
mov eax,[PointerToPicture] mov eax,[PointerToPicture]
mov ebx,[Picture_SizeX] mov ebx,[Picture_SizeX]
mov esi,[x] mov esi,[x]
mov edi,[y] mov edi,[y]
call PutPixel call PutPixel
pop edi esi
pop edi
pop esi
add edx,3 add edx,3
@ -669,18 +578,15 @@ draw_1:
add eax,[Dy_] add eax,[Dy_]
mov [y],eax mov [y],eax
cmp eax,[rectangular_shade_y] cmp eax,[rectangular_shade_y]
jl loop_fill_rectangle_y_paste jl loop_fill_rectangle_y_paste
call MovePictureToWorkScreen call MovePictureToWorkScreen
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
mov [Paste_flag],1 mov [Paste_flag],1
jmp still jmp still
;---------------------------------------------------------------------
no_paste: no_paste:
;<<<<<<<<<<CUT>>>>>>>>>> ;<<<<<<<<<<CUT>>>>>>>>>>
cmp [number_menu],4 cmp [number_menu],4
jne no_cut jne no_cut
@ -702,7 +608,6 @@ draw_1:
mov [rectangular_shade_x],eax mov [rectangular_shade_x],eax
no_remove_x_cut: no_remove_x_cut:
cmp ebx,[rectangular_shade_y] cmp ebx,[rectangular_shade_y]
jl no_remove_y_cut jl no_remove_y_cut
@ -711,7 +616,6 @@ draw_1:
mov [rectangular_shade_y],ebx mov [rectangular_shade_y],ebx
no_remove_y_cut: no_remove_y_cut:
mov eax,[OldX] mov eax,[OldX]
mov ebx,[OldY] mov ebx,[OldY]
mov ecx,[rectangular_shade_x] mov ecx,[rectangular_shade_x]
@ -734,32 +638,26 @@ draw_1:
mov [Dx_],-1 mov [Dx_],-1
no_signum_fill_r_x: no_signum_fill_r_x:
sub edx,ebx sub edx,ebx
jnz no_signum_fill_r_y jnz no_signum_fill_r_y
mov [Dy_],-1 mov [Dy_],-1
no_signum_fill_r_y: no_signum_fill_r_y:
mov [y],edi mov [y],edi
loop_fill_rectangle_y: loop_fill_rectangle_y:
mov [x],esi mov [x],esi
loop_fill_rectangle_x: loop_fill_rectangle_x:
push esi edi
push esi
push edi
mov eax,[PointerToPicture] mov eax,[PointerToPicture]
mov ebx,[Picture_SizeX] mov ebx,[Picture_SizeX]
mov ecx,dword 0xffffff mov ecx,dword 0xffffff
mov esi,[x] mov esi,[x]
mov edi,[y] mov edi,[y]
call PutPixel call PutPixel
pop edi esi
pop edi
pop esi
mov eax,[x] mov eax,[x]
add eax,[Dx_] add eax,[Dx_]
@ -779,27 +677,24 @@ draw_1:
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
jmp still jmp still
;---------------------------------------------------------------------
no_cut: no_cut:
;<<<<<<CLEARE ALL>>>>>> ;<<<<<<CLEARE ALL>>>>>>
cmp [number_menu],5 cmp [number_menu],5
jne no_cleare_all jne no_cleare_all
call cleare_work_arrea call cleare_work_arrea
call MovePictureToWorkScreen call MovePictureToWorkScreen
and [number_panel],0 and [number_panel],0
and [number_menu],0 and [number_menu],0
jmp still jmp still
;---------------------------------------------------------------------
no_cleare_all: no_cleare_all:
;<<<<<<TO ALLOCATE ALL>>>>>> ;<<<<<<TO ALLOCATE ALL>>>>>>
cmp [number_menu],6 cmp [number_menu],6
jne no_to_allocate_all jne still ;no_to_allocate_all
mov [OldX],1 mov [OldX],1
mov [OldY],1 mov [OldY],1
@ -818,12 +713,8 @@ draw_1:
; call TakeButtonInstruments ; call TakeButtonInstruments
; call MovePictureToWorkScreen ; call MovePictureToWorkScreen
jmp still jmp still
;---------------------------------------------------------------------
no_to_allocate_all: ;no_to_allocate_all:
;no_edit:
no_edit: ; jmp still
;---------------------------------------------------------------------
jmp still
ret

View File

@ -2,7 +2,6 @@
;-------analizing picture to palette------------------------ ;-------analizing picture to palette------------------------
;----------------------------------------------------------- ;-----------------------------------------------------------
analizing_picture_to_palette: analizing_picture_to_palette:
mov eax,[Picture_SizeX] mov eax,[Picture_SizeX]
mov ebx,[Picture_SizeY] mov ebx,[Picture_SizeY]
imul eax,ebx imul eax,ebx
@ -19,14 +18,15 @@ analizing_picture_to_palette:
analizing_to_palette: analizing_to_palette:
mov eax,[edx] mov eax,[edx]
and eax,0xffffff and eax,0xffffff
mov edi,esi mov edi,esi
mov ebp,[PointerToPalette] mov ebp,[PointerToPalette]
next_color_in_palette: next_color_in_palette:
mov ebx,[ebp] mov ebx,[ebp]
and ebx,0xffffff and ebx,0xffffff
cmp ebx,eax ;this is color have in palette cmp ebx,eax ;this is color have in palette
je exit_loop_palette je exit_loop_palette
add ebp,4 add ebp,4
dec edi dec edi
jnz next_color_in_palette jnz next_color_in_palette
@ -34,6 +34,7 @@ analizing_picture_to_palette:
inc esi inc esi
cmp esi,256 ;256 colors cmp esi,256 ;256 colors
ja more_than_256_colors ja more_than_256_colors
mov ebp,[PointerToPalette] mov ebp,[PointerToPalette]
mov ebx,esi mov ebx,esi
dec ebx dec ebx
@ -44,13 +45,10 @@ analizing_picture_to_palette:
mov [ebp+2],al mov [ebp+2],al
exit_loop_palette: exit_loop_palette:
add edx,3 add edx,3
dec ecx dec ecx
jnz analizing_to_palette jnz analizing_to_palette
more_than_256_colors: more_than_256_colors:
mov eax,esi mov eax,esi
ret ret

View File

@ -1,7 +1,7 @@
;********************************************************** ;**********************************************************
;------------------TEXT DATA------------------------------- ;------------------TEXT DATA-------------------------------
;********************************************************** ;**********************************************************
name_of_program db 'Graphics editor <<ANIMAGE>> V 1.2',0 name_of_program db 'Graphics editor <<ANIMAGE>> V 1.3',0
mouse_pos_x db 'X=' mouse_pos_x db 'X='
mouse_pos_y db 'Y=' mouse_pos_y db 'Y='
new_text1 db 'PICTURE SIZE X' new_text1 db 'PICTURE SIZE X'

View File

@ -3,14 +3,11 @@
;------------------------------------------------- ;-------------------------------------------------
panel_interraction: panel_interraction:
;>>>>>>>>>>>>>>>>>>>>>>>>>> ;>>>>>>>>>>>>>>>>>>>>>>>>>>
mov eax,18 ; mcall 18,14
mov ebx,14
;mcall
and [Panel_flag],0 and [Panel_flag],0
;collision with text on panel ;collision with text on panel
next_columnus_text: next_columnus_text:
mov eax,[edi] mov eax,[edi]
mov ebx,[edi+4] mov ebx,[edi+4]
sub eax,10 sub eax,10
@ -34,33 +31,27 @@ panel_interraction:
mov edi,[button_menu_size_y] mov edi,[button_menu_size_y]
mov esi,[button_menu_size_x] mov esi,[button_menu_size_x]
call columnus call columnus
pop edi pop edi
mov esi,7
mov esi,7
test eax,eax test eax,eax
jz no_columnus_text jz no_columnus_text
mov esi,1 mov esi,1
mov [Panel_flag],1 mov [Panel_flag],1
call GetMouseClick call GetMouseClick
test eax,eax test eax,eax
jz no_mouse_pressed jz no_mouse_pressed
mov eax,18 ; mcall 18,14
mov ebx,14
;mcall
call print_panel_menu jmp print_panel_menu
no_mouse_pressed: no_mouse_pressed:
no_columnus_text: no_columnus_text:
mov eax,[Icon_text_x] mov eax,[Icon_text_x]
mov ebx,[Icon_text_y] mov ebx,[Icon_text_y]
mov ecx,[button_menu_size_x] ;------------------------- mov ecx,[button_menu_size_x]
mov edx,[button_menu_size_y] mov edx,[button_menu_size_y]
call draw_volume_rectangle call draw_volume_rectangle
@ -69,32 +60,26 @@ panel_interraction:
mov [counter],7 mov [counter],7
mov edi,panel_text mov edi,panel_text
call print_panel_text call print_panel_text
pop edi pop edi
pop [counter] pop [counter]
dec [counter] dec [counter]
jnz next_columnus_text jnz next_columnus_text
ret jmp still
;--------------------------------------------------------- ;---------------------------------------------------------
;-----draw panel menu(main engin of panel)---------------- ;-----draw panel menu(main engin of panel)----------------
;--------------------------------------------------------- ;---------------------------------------------------------
print_panel_menu: print_panel_menu:
push [counter] push [counter]
;delit main buttons(some time) ;delit main buttons(some time)
mov [counter],10 mov [counter],10
next_icon_delit1: next_icon_delit1:
mov eax,8
mov edx,[counter] mov edx,[counter]
add edx,11100000000000000000000000000000b add edx,11100000000000000000000000000000b
mcall mcall 8
inc [counter] inc [counter]
cmp [counter],30 cmp [counter],30
jl next_icon_delit1 jl next_icon_delit1
@ -102,13 +87,10 @@ print_panel_menu:
mov [counter],40 mov [counter],40
next_icon_delit2: next_icon_delit2:
mov eax,8
mov edx,[counter] mov edx,[counter]
add edx,11100000000000000000000000000000b add edx,11100000000000000000000000000000b
mcall mcall 8
inc [counter] inc [counter]
cmp [counter],45 cmp [counter],45
jl next_icon_delit2 jl next_icon_delit2
@ -116,28 +98,22 @@ print_panel_menu:
mov [counter],45 mov [counter],45
next_icon_delit3: next_icon_delit3:
mov eax,8
mov edx,[counter] mov edx,[counter]
add edx,11100000000000000000000000000000b add edx,11100000000000000000000000000000b
mcall mcall 8
inc [counter] inc [counter]
cmp [counter],50 cmp [counter],50
jl next_icon_delit3 jl next_icon_delit3
;delit buttons of palette ;delit buttons of palette
mov eax,8
mov edx,51 mov edx,51
add edx,11100000000000000000000000000000b add edx,11100000000000000000000000000000b
mcall mcall 8
;delit buttons of color ;delit buttons of color
mov eax,8
mov edx,52 mov edx,52
add edx,11100000000000000000000000000000b add edx,11100000000000000000000000000000b
mcall mcall 8
pop [counter] pop [counter]
@ -157,8 +133,6 @@ print_panel_menu:
pop esi pop esi
calculate_counter_menu: calculate_counter_menu:
;calculate menu counter ;calculate menu counter
mov eax,[counter] mov eax,[counter]
dec eax dec eax
@ -169,15 +143,12 @@ print_panel_menu:
call GetMouseCoordinats call GetMouseCoordinats
and [menu_counter],0 and [menu_counter],0
push esi
push edi push esi edi
;ᣫ ¦¨¢ ­¨¥  ­¨¬ æ¨¨ >>>>>>>>>>>>>>>>>> ;ᣫ ¦¨¢ ­¨¥  ­¨¬ æ¨¨ >>>>>>>>>>>>>>>>>>
mov eax,18 ; mcall 18,4
mov ebx,14
;mcall
menu_loop: menu_loop:
mov eax,[menu_coordinat_x] mov eax,[menu_coordinat_x]
mov ebx,36 mov ebx,36
mov ecx,[MouseX] mov ecx,[MouseX]
@ -197,7 +168,6 @@ print_panel_menu:
mov esi,1 mov esi,1
no_columnus_menu_text: no_columnus_menu_text:
mov eax,[menu_coordinat_x] mov eax,[menu_coordinat_x]
mov ebx,36 mov ebx,36
mov ecx,[menu_size_x] mov ecx,[menu_size_x]
@ -209,11 +179,9 @@ print_panel_menu:
call draw_volume_rectangle call draw_volume_rectangle
add [menu_counter],20 add [menu_counter],20
dec [counter_menu] dec [counter_menu]
jnz menu_loop jnz menu_loop
;print menu text ;print menu text
push [counter] push [counter]
mov esi,[counter] mov esi,[counter]
@ -224,26 +192,18 @@ print_panel_menu:
mov [counter],eax mov [counter],eax
call print_panel_text call print_panel_text
pop [counter] pop [counter]
pop edi pop edi esi
pop esi
menu_still: menu_still:
mcall 10
mov eax,10 mcall 2
mcall mcall 17
mov eax,2
mcall
mov eax,17
mcall
call GetMouseClick call GetMouseClick
test eax,eax test eax,eax
jz calculate_counter_menu jz calculate_counter_menu
call GetMouseCoordinats call GetMouseCoordinats
;calculate menu counter ;calculate menu counter
mov eax,[counter] mov eax,[counter]
dec eax dec eax
@ -254,12 +214,9 @@ print_panel_menu:
and [menu_counter],0 and [menu_counter],0
and [counter_11],0 and [counter_11],0
push esi push esi edi
push edi
menu_loop2: menu_loop2:
mov eax,[menu_coordinat_x] mov eax,[menu_coordinat_x]
mov ebx,36 mov ebx,36
mov ecx,[MouseX] mov ecx,[MouseX]
@ -273,7 +230,6 @@ print_panel_menu:
call columnus call columnus
inc [counter_11] inc [counter_11]
test eax,eax test eax,eax
jz no_columnus_menu_text2 jz no_columnus_menu_text2
@ -281,40 +237,30 @@ print_panel_menu:
mov [number_menu],esi mov [number_menu],esi
no_columnus_menu_text2: no_columnus_menu_text2:
add [menu_counter],20 add [menu_counter],20
dec [counter_menu] dec [counter_menu]
jnz menu_loop2 jnz menu_loop2
pop edi pop edi esi
pop esi
mov eax,5 mcall 5,15
mov ebx,15
mcall
push [counter] push [counter]
pushad pusha
call drawwin call drawwin
popa
popad
pop [counter] pop [counter]
mov eax,[counter] mov eax,[counter]
mov [number_panel],eax mov [number_panel],eax
call TakeInstruments jmp TakeInstruments
jmp still
;--------------------------------------------------------- ;---------------------------------------------------------
;------print mouse position on panel---------------------- ;------print mouse position on panel----------------------
;--------------------------------------------------------- ;---------------------------------------------------------
PrintMousePos: PrintMousePos:
pushad pushad
mov eax,[Window_SizeX] mov eax,[Window_SizeX]
sub eax,75 sub eax,75
mov ebx,20+15+6 mov ebx,20+15+6
@ -347,8 +293,6 @@ PrintMousePos:
mov esi,2 mov esi,2
call print_text call print_text
mov eax,47
mov ebx,4*65536
mov ecx,[ScreenX] mov ecx,[ScreenX]
add ecx,[PosX] add ecx,[PosX]
mov edx,[Window_SizeX] mov edx,[Window_SizeX]
@ -356,102 +300,24 @@ PrintMousePos:
shl edx,16 shl edx,16
add edx,20+15+6+6 add edx,20+15+6+6
and esi,0 and esi,0
mcall mcall 47,<4,0>
mov eax,47
mov ebx,4*65536
mov ecx,[ScreenY] mov ecx,[ScreenY]
add ecx,[PosY] add ecx,[PosY]
mov edx,[Window_SizeX] mov edx,[Window_SizeX]
sub edx,55 sub edx,55
shl edx,16 shl edx,16
add edx,20+15+6+18+1+6 add edx,20+15+6+18+1+6
and esi,0
mcall mcall
popad popad
ret ret
;----------------------------------------------------------
;---------------draw panel in window of program------------
;----------------------------------------------------------
draw_panel:
mov eax,5
mov ebx,20
mov ecx,[Window_SizeX]
mov edx,15
mov esi,6
sub ecx,10
call draw_volume_rectangle ; top menu - file and etc.
;mov eax,5
;mov ebx,20
;mov ecx,[Window_SizeX]
;mov edx,15
;mov esi,6
;sub ecx,10
;call draw_volume_rectangle
mov eax,5
mov ebx,20+15+1
mov ecx,[Window_SizeX]
mov edx,50
mov esi,1
sub ecx,10
call draw_volume_rectangle ; tools panel
mov eax,5
mov ebx,20+15+1+50+1
mov ecx,[Window_SizeX]
mov edx,[Window_SizeY]
mov esi,1
sub ecx,10+20
sub edx,20+15+1+50+1+5+20
call draw_volume_rectangle ; picure area
mov eax,5
mov ebx,[Window_SizeY]
mov ecx,[Window_SizeX]
mov edx,20+10
mov esi,3
sub ecx,30
sub ebx,25+10
call draw_volume_rectangle ; horizontal scrollbar
mov eax,[Window_SizeX]
mov ebx,20+15+1+49+2
mov ecx,20+10
mov edx,[Window_SizeY]
mov esi,3
sub eax,25+10
sub edx,20+15+1+49+5+20
call draw_volume_rectangle ; vertical scrollbar
mov eax,[Window_SizeX]
mov ebx,[Window_SizeY]
mov ecx,20+10
mov edx,20+10
mov esi,6
sub eax,25+10
sub ebx,25+10
call draw_volume_rectangle ; down and right small area
;mov eax,445
;mov ebx,20+15+6
;mov ecx,37
;mov edx,37
;mov esi,4
;call draw_volume_rectangle
ret
;---------------------------------------------------------- ;----------------------------------------------------------
;----------print text on the panel and menu---------------- ;----------print text on the panel and menu----------------
;---------------------------------------------------------- ;----------------------------------------------------------
print_panel_text: print_panel_text:
next_panel_text: next_panel_text:
mov eax,[edi] mov eax,[edi]
mov ebx,[edi+4] mov ebx,[edi+4]
; xor ecx,ecx ; xor ecx,ecx
@ -473,7 +339,6 @@ print_panel_text:
;------------draw lines of scoll--------------------------- ;------------draw lines of scoll---------------------------
;---------------------------------------------------------- ;----------------------------------------------------------
draw_scrollers: draw_scrollers:
mov edi,[CounterX] mov edi,[CounterX]
mov eax,[Scroll1CoordinatX] mov eax,[Scroll1CoordinatX]
mov ebx,[Window_SizeY] mov ebx,[Window_SizeY]
@ -487,17 +352,13 @@ draw_scrollers:
mov [Scroll1MaxSizeY],edx mov [Scroll1MaxSizeY],edx
mov [Scroll1MaxSizeX],ecx mov [Scroll1MaxSizeX],ecx
imul ecx,edi imul ecx,edi
push eax push eax ebx edx
push ebx
push edx
mov eax,ecx mov eax,ecx
mov ebx,[Picture_SizeX] mov ebx,[Picture_SizeX]
cdq cdq
idiv ebx idiv ebx
mov ecx,eax mov ecx,eax
pop edx pop edx ebx eax
pop ebx
pop eax
mov [Scroll1SizeX],ecx mov [Scroll1SizeX],ecx
mov edi,[Scroll1MaxSizeX] mov edi,[Scroll1MaxSizeX]
sub edi,ecx sub edi,ecx
@ -517,15 +378,13 @@ draw_scrollers:
mov [Scroll2MaxSizeY],edx mov [Scroll2MaxSizeY],edx
imul edx,[CounterY] imul edx,[CounterY]
push eax push eax ebx
push ebx
mov eax,edx mov eax,edx
mov ebx,[Picture_SizeY] mov ebx,[Picture_SizeY]
cdq cdq
idiv ebx idiv ebx
mov edx,eax mov edx,eax
pop ebx pop ebx eax
pop eax
mov [Scroll2SizeY],edx mov [Scroll2SizeY],edx
mov edi,[Scroll2MaxSizeY] mov edi,[Scroll2MaxSizeY]
sub edi,edx sub edi,edx
@ -534,7 +393,6 @@ draw_scrollers:
call draw_volume_rectangle call draw_volume_rectangle
ret ret
ret
button_menu_size_x dd 0 button_menu_size_x dd 0
button_menu_size_y dd 0 button_menu_size_y dd 0

View File

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