/programs/media/animage/trunk/animage.asm |
---|
1,6 → 1,12 |
;******************************************************* |
;**************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 |
; last update: 30/09/2010 |
; written by: Marat Zakiyanov aka Mario79, aka Mario |
69,7 → 75,7 |
call drawwin |
;--------------------------------------------------------- |
;---------Check loading of file from psrsmeters----------- |
;---------Check loading of file from parameters----------- |
;--------------------------------------------------------- |
; mov eax,parameters |
; mov ebx,file_path |
98,15 → 104,14 |
;---------------------------------------------------------- |
;---------------------MAIN LOOP---------------------------- |
;---------------------------------------------------------- |
red: |
call drawwin |
still: |
call event |
cmp eax,1 |
jne no_redraw_window |
je red |
call drawwin |
jmp still |
no_redraw_window: |
cmp eax,2 |
je keys |
152,6 → 157,7 |
;------------variables and data of program------------------ |
;----------------------------------------------------------- |
sound_havent_memory db 150,64,0 |
include 'lib_data.inc' |
include 'panel_data.inc' |
include 'palitra256.inc' |
306,13 → 312,9 |
align 4 |
CursorsID rd 10 |
;--------------------------------------------------------------------- |
;align 4 |
;parameters |
; rb 257 |
;--------------------------------------------------------------------- |
align 4 |
file_path: |
rb 4096 ;rb 1024+16 |
rb 4096 |
;--------------------------------------------------------------------- |
align 4 |
filename_area: |
335,9 → 337,6 |
rb 1024 |
;--------------------------------------------------------------------- |
align 4 |
IPC_table rd 256 |
;--------------------------------------------------------------------- |
align 4 |
rb 4096 |
stacktop: |
;--------------------------------------------------------------------- |
/programs/media/animage/trunk/design.inc |
---|
1,11 → 1,9 |
;----------------------------------------------------- |
;---------------------------------------------------------- |
draw_volume_rectangle: |
mov [line_x],eax |
mov [line_y],ebx |
mov [line_size_x],ecx |
mov [line_size_y],edx |
cmp esi,1 |
jne no_volume_light_rectangle |
14,9 → 12,8 |
mov [color_line2],0xffffff |
mov [color_line3],0xc7cbcf |
jmp exit_colors |
;---------------------------------------------------------- |
no_volume_light_rectangle: |
cmp esi,2 |
jne no_pressed_rectangle |
24,11 → 21,9 |
mov [color_line1],0xaeabae |
mov [color_line2],0x666666 |
mov [color_line3],0x666666 |
jmp exit_colors |
;---------------------------------------------------------- |
no_pressed_rectangle: |
cmp esi,3 |
jne no_pressed_panel |
37,9 → 32,8 |
mov [color_line2],7000 |
mov [color_line3],0xffffff |
jmp exit_colors |
;---------------------------------------------------------- |
no_pressed_panel: |
cmp esi,4 |
jne no_pressed_light_panel |
48,9 → 42,8 |
mov [color_line2],7000 |
mov [color_line3],0xffffff |
jmp exit_colors |
;---------------------------------------------------------- |
no_pressed_light_panel: |
cmp esi,5 |
jne no_light_pressed_rectangle |
58,11 → 51,9 |
mov [color_line1],0xaeabae |
mov [color_line2],0x666666 |
mov [color_line3],0x666666 |
jmp exit_colors |
;---------------------------------------------------------- |
no_light_pressed_rectangle: |
cmp esi,6 |
jne no_work_rectangle |
71,9 → 62,8 |
mov [color_line2],0xc7cbcf |
mov [color_line3],0xc7cbcf |
jmp exit_colors |
;---------------------------------------------------------- |
no_work_rectangle: |
cmp esi,7 |
jne no_work_rectangle_2 |
82,9 → 72,8 |
mov [color_line2],0xc7cbcf |
mov [color_line3],0xc7cbcf |
jmp exit_colors |
;---------------------------------------------------------- |
no_work_rectangle_2: |
exit_colors: |
;draw rectangle |
mov ebx,[line_x] |
199,11 → 188,9 |
dec ecx |
dec ebx |
call draw_line |
ret |
;---------------------------------------------------------- |
rectangle: |
no_light_rectangle: |
mov [line_x],eax |
mov [line_y],ebx |
221,15 → 208,11 |
ret |
;---------------------------------------------------------- |
draw_conture: |
mov [line_x],eax |
mov [line_y],ebx |
mov [line_size_x],ecx |
mov [line_size_y],edx |
mov [color_line1],0xaeabae |
;line 1 |
mov edx,[color_line1] |
mov ebx,[line_x] |
274,11 → 257,9 |
add ebx,[line_size_x] |
add ecx,[line_size_y] |
call draw_line |
ret |
;---------------------------------------------------------- |
columnus: |
sub eax,ecx |
jns no_columnus |
neg eax |
307,8 → 288,7 |
ret |
;---------------------------------------------------------- |
draw_rectangle: |
mov eax,13 |
mcall |
mcall 13 |
ret |
;------------------------ |
draw_line: |
/programs/media/animage/trunk/events_of_mouse.inc |
---|
2,9 → 2,7 |
;-------------interraction MOUSE-------------- |
;--------------------------------------------- |
mouse: |
call GetMouseCoordinats |
;panel |
mov edx,[Window_SizeX] |
sub edx,5 |
22,23 → 20,19 |
jae no_panel |
call GetMouseCoordinats |
mov [counter],7 |
mov edi,panel_text |
call panel_interraction |
jmp panel_interraction |
jmp still |
no_panel: |
cmp [Panel_flag],0 |
jz no_redraw_panel |
mov [counter],7 |
mov edi,panel_text |
call panel_interraction |
jmp panel_interraction |
no_redraw_panel: |
call GetMouseCoordinats |
mov eax,[MouseX] |
mov ebx,[MouseY] |
52,16 → 46,12 |
cmp ebx,edx |
jae mouse_scroll |
jmp no_scrollers |
mouse_scroll: |
mov [exit_from_work_arrea],1 ;mouse situated after work arrea |
;scrollers |
call GetMouseClick |
cmp eax,1 |
jne no_click |
74,11 → 64,9 |
mov esi,[Scroll1MaxSizeX] |
mov edi,[Scroll1MaxSizeY] |
call columnus |
test eax,eax |
jz no_horizontal |
mov eax,9 |
mov ebx,[Scroll1CoordinatY] |
mov ecx,[Scroll1MaxSizeX] |
96,7 → 84,6 |
mov edx,8+1 |
add edx,[Scroll1MaxSizeX] |
mov [Scroll1CoordinatX],eax |
sub eax,9 |
jns no_min_scroll |
103,7 → 90,6 |
mov [Scroll1CoordinatX],9 |
no_min_scroll: |
cmp ecx,edx |
jl no_max_scroll |
112,7 → 98,6 |
mov [Scroll1CoordinatX],edx |
no_max_scroll: |
; |
mov eax,[Scroll1CoordinatX] |
sub eax,9 |
mov ebx,[Picture_SizeX] |
121,11 → 106,9 |
cdq |
idiv ebx |
mov [PosX],eax |
jmp no_vertical |
no_horizontal: |
mov eax,[Scroll2CoordinatX] |
mov ebx,[Scroll2CoordinatY] |
mov ecx,[MouseX] |
133,7 → 116,6 |
mov esi,[Scroll2MaxSizeX] |
mov edi,[Scroll2MaxSizeY] |
call columnus |
test eax,eax |
jz no_vertical |
161,7 → 143,6 |
mov [Scroll2CoordinatY],89 |
no_min_scroll2: |
cmp ecx,edx |
jl no_max_scroll2 |
170,7 → 151,6 |
mov [Scroll2CoordinatY],edx |
no_max_scroll2: |
; |
mov eax,[Scroll2CoordinatY] |
sub eax,89 |
mov ebx,[Picture_SizeY] |
181,18 → 161,14 |
mov [PosY],eax |
no_vertical: |
call CalculatePositionScreen |
call draw_scrollers |
call MovePictureToWorkScreen |
no_click: |
jmp still |
jmp still |
no_scrollers: |
mov eax,[MouseX] |
mov ebx,[MouseY] |
mov ecx,[Window_SizeX] |
211,32 → 187,23 |
cmp ebx,edx |
jae not_work_arrea |
jmp mouse_in_work_arrea |
not_work_arrea: |
mov [exit_from_work_arrea],1 |
jmp still |
mouse_in_work_arrea: |
call GetScreenCordinats |
call PrintMousePos |
call GetMouseClick |
test eax,eax |
jz no_use_instruments |
cmp [Activate_instrument],0 |
jnz no_undo___ |
;------------begin copy for undo------------- |
inc [number_undo] |
cmp [number_undo],1 |
jne no_one__ |
243,7 → 210,6 |
mov edi,[PointerToCopyPicture] |
no_one__: |
cmp [number_undo],2 |
jne no_two__ |
250,7 → 216,6 |
mov edi,[PointerToCopyPicture2] |
no_two__: |
cmp [number_undo],3 |
jne no_three__ |
270,7 → 235,6 |
mov edi,[PointerToCopyPicture2] |
no_three__: |
mov esi,[PointerToPicture] |
mov ecx,[Picture_SizeX] |
imul ecx,[Picture_SizeY] |
282,37 → 246,26 |
rep movsd |
;--------------end copy for undo------------- |
no_undo___: |
call TakeButtonInstruments |
call TakeButtonInstruments |
no_use_instruments: |
mov eax,[Current_instrument] |
and [Activate_instrument],0 |
jmp still |
;----------------------------------------------- |
;---------get mouse cordinats------------------- |
;----------------------------------------------- |
GetMouseCoordinats: |
mov eax,37 |
mov ebx,1 |
mcall |
mcall 37,1 |
mov ebx,eax |
shr eax,16 |
and ebx,0xffff |
mov [MouseX],eax |
mov [MouseY],ebx |
ret |
;------------------------------------------------ |
;-------get mouse attributs---------------------- |
;------------------------------------------------ |
GetMouseClick: |
mov eax,37 |
mov ebx,2 |
mcall |
mcall 37,2 |
ret |
/programs/media/animage/trunk/events_of_window.inc |
---|
2,16 → 2,14 |
;-------------draw window of program----------------------- |
;---------------------------------------------------------- |
drawwin: |
mov eax,9 |
mov ebx,IPC_table |
or ecx,-1 |
mcall |
mcall 9,procinfo |
mov esi,procinfo |
mov eax,[IPC_table+34] |
mov ebx,[IPC_table+38] |
mov ecx,[IPC_table+42] |
mov edx,[IPC_table+46] |
mov eax,[esi+34] |
mov ebx,[esi+38] |
mov ecx,[esi+42] |
mov edx,[esi+46] |
mov [Window_CordinatX],eax |
mov [Window_CordinatY],ebx |
mov [Window_SizeX],ecx |
24,7 → 22,6 |
mov ecx,[Window_SizeX] |
no_minimum_size_x: |
cmp [Window_SizeY],400 |
jae no_minimum_size_y |
32,7 → 29,6 |
mov edx,[Window_SizeY] |
no_minimum_size_y: |
mov [MaxWorkScreen_SizeX],ecx |
mov [MaxWorkScreen_SizeY],edx |
sub [MaxWorkScreen_SizeX],20+10+5+10 |
44,7 → 40,6 |
mov [MaxWorkScreen_SizeX],ecx |
no_znak1: |
cmp [MaxWorkScreen_SizeY],0 |
jns no_znak2 |
52,11 → 47,8 |
no_znak2: |
mov eax,12 |
mov ebx,1 |
mcall |
and eax,0 |
mcall 12,1 |
;------------------------------------------------ |
mov ebx,[Window_CordinatX] |
mov ecx,[Window_CordinatY] |
shl ebx,16 |
63,42 → 55,113 |
shl ecx,16 |
add ebx,[Window_SizeX] |
add ecx,[Window_SizeY] |
mov edx,0x43aabbcc |
xor esi,esi ;0x805080d0 |
xor edi,edi ;0x005080d0 |
mcall |
; xor edi,edi ;0x005080d0 |
mcall 0,,,0x53aabbcc,,name_of_program |
;------------------------------------------------ |
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. |
call draw_panel |
call PrintMousePos |
mov [counter],7 |
mov edi,panel_text |
call print_panel_text |
;------------------------------------------------ |
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 |
call draw_icons |
call PrintMousePos |
;------------------------------------------------ |
mov ecx,[k] |
and [PosX],0 |
and [PosY],0 |
call MovePictureToWorkScreen |
;------------------------------------------------ |
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 |
;>>>>>>Leency |
;mov eax,10 |
;mov ebx,5 |
;mov ecx,0xffffff |
;mov edx,name_of_program |
;mov esi,34 |
;call print_text |
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 |
mov eax,71 |
mov ebx,1 |
mov ecx,name_of_program |
int 40h |
;Leency<<<<<<< |
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 eax,12 |
mov ebx,2 |
mcall |
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 |
mov ecx,[k] |
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 |
and [PosX],0 |
and [PosY],0 |
call MovePictureToWorkScreen |
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 |
call draw_icons |
ret |
;------------------------------------------------ |
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 |
;----------------------------------------------------------------------------- |
/programs/media/animage/trunk/init_data.inc |
---|
17,15 → 17,6 |
mov [Picture_SizeY],400;280 |
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 [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 |
46,17 → 37,4 |
and [number_undo],0 |
and [instrument_used],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 |
/programs/media/animage/trunk/load_from_parameters.inc |
---|
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: |
mov eax,file_path |
mov ebx,[ScreenPointer] |
add ebx,0x10000 |
50,16 → 23,13 |
mov ebx,[esi+22] |
mov [Picture_SizeX],eax |
mov [Picture_SizeY],ebx |
jmp exit_type_1 |
no_bmp_file_1: |
;-------------is this GIF file ?---------------- |
xor eax,eax |
mov ax,[esi] |
mov [type],ax |
cmp [type],'GI' |
jne no_gif_file_1 |
70,20 → 40,16 |
mov bx,word[esi+2] |
mov [Picture_SizeX],eax |
mov [Picture_SizeY],ebx |
jmp exit_type_1 |
no_gif_file_1: |
jmp no_unpakcing_file_1 |
exit_type_1: |
;---------------------------------------------------------- |
;Get momory for unpacking picture and for picture's bufers |
;---------------------------------------------------------- |
call GetMemory |
;---------------------------------------------------------- |
;--------------------Load file in memory------------------- |
;---------------------------------------------------------- |
91,7 → 57,6 |
mov eax,file_path |
mov ebx,[PointerToCopyPicture] |
add ebx,1000 |
call load_file |
;---------------------------------------------------------- |
101,15 → 66,14 |
add esi,1000 |
mov edi,[PointerToPicture] |
mov eax,[ScreenPointer] |
cmp [type],'BM' |
jne no_unpakcing_bmp_file_1 |
;BMP DECODER |
call bmptoimg |
mov [save_flag],1 |
jmp no_unpakcing_file_1 |
no_unpakcing_bmp_file_1: |
cmp [type],'GI' |
jne no_unpakcing_file_1 |
;GIF DECODER |
116,10 → 80,9 |
sub edi,8 |
call ReadGIF |
mov [save_flag],1 |
no_unpakcing_file_1: |
call MovePictureToWorkScreen |
mov [Scroll1CoordinatX],9 |
mov [Scroll2CoordinatY],89 |
ret |
/programs/media/animage/trunk/memory.inc |
---|
1,30 → 1,8 |
;---------------------------------------------------------- |
;--------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: |
pushad |
pusha |
mov ecx,[Picture_SizeX] |
mov edx,[Picture_SizeY] |
imul ecx,edx |
36,13 → 14,14 |
jnz have_new_memory |
mov esi,sound_havent_memory |
call sound |
pushad |
popa |
add esp,4 |
jmp still |
have_new_memory: |
mov [ScreenPointer],eax |
call prepare_data_pointers |
popad |
popa |
ret |
;--------------------------------------------------------- |
prepare_data_pointers: |
72,5 → 51,13 |
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 |
;--------------------------------------------------------- |
/programs/media/animage/trunk/menu_instruments.inc |
---|
2,7 → 2,6 |
;-----------instruments of menu----------------------------- |
;----------------------------------------------------------- |
TakeInstruments: |
;|||||||||||||||||||FILE|||||||||||||||||||||| |
cmp [number_panel],7 |
jne no_file |
60,32 → 59,18 |
mov esi,2 |
call print_text |
mov eax,8 |
mov ebx,177*65536+40 |
mov ecx,115*65536+14 |
mov edx,1000000000000000000000000000000b |
add edx,1000 |
mcall |
mov edx,1000000000000000000000000000000b+1000 |
mcall 8,<177,40>,<115,14>, |
mov eax,8 |
mov ebx,177*65536+40 |
mov ecx,139*65536+14 |
mov edx,1000000000000000000000000000000b |
add edx,1001 |
mcall |
mov edx,1000000000000000000000000000000b+1001 |
mcall ,,<139,14>, |
mov eax,8 |
mov ebx,175*65536+40 |
mov ecx,170*65536+15 |
mov edx,1000000000000000000000000000000b |
add edx,1002 |
mcall |
mov edx,1000000000000000000000000000000b+1002 |
mcall ,<175,40>,<170,15> |
no_activate_space: |
mcall 10 |
mov eax,10 |
mcall |
cmp eax,1 |
je exit_new |
92,8 → 77,7 |
cmp eax,3 |
jne no_activate_space |
mov eax,17 |
mcall |
mcall 17 |
shr eax,8 |
cmp eax,1000 |
117,11 → 101,9 |
call value |
mov [Picture_SizeX],eax |
jmp no_activate_space |
;--------------------------------------------------------------------- |
no_picture_size_x: |
cmp eax,1001 |
jne no_picture_size_y |
140,39 → 122,23 |
call value |
mov [Picture_SizeY],eax |
jmp no_activate_space |
;--------------------------------------------------------------------- |
no_picture_size_y: |
cmp eax,1002 |
jne no_activate_space |
exit_new: |
mov edx,11100000000000000000000000000000b+1002 |
mcall 8,<175,40>,<170,15> |
mov eax,8 |
mov ebx,175*65536+40 |
mov ecx,170*65536+15 |
mov edx,11100000000000000000000000000000b |
add edx,1002 |
mcall |
mov edx,11100000000000000000000000000000b+1001 |
mcall ,<177,40>,<139,14> |
mov eax,8 |
mov ebx,177*65536+40 |
mov ecx,139*65536+14 |
mov edx,11100000000000000000000000000000b |
add edx,1001 |
mcall |
mov edx,11100000000000000000000000000000b+1000 |
mcall ,,<115,14> |
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 |
call GetMemory |
and [save_flag],0 |
181,10 → 147,9 |
call cleare_work_arrea |
call drawwin |
jmp still |
;--------------------------------------------------------------------- |
no_new: |
;<<<<<OPEN>>>>>>> |
cmp [number_menu],2 |
jne no_open |
199,13 → 164,9 |
cmp [OpenDialog_data.status],1 |
jne still |
;--------------------------------------------------------------------- |
open_1: |
mcall 40,100111b |
mov eax,40 |
mov ebx,100111b |
mcall |
mov eax,file_path |
mov ebx,[ScreenPointer] |
add ebx,0x10000 |
228,11 → 189,9 |
mov ebx,[esi+22] |
mov [Picture_SizeX],eax |
mov [Picture_SizeY],ebx |
jmp exit_type |
;--------------------------------------------------------------------- |
no_bmp_file: |
;-------------is this GIF file ?---------------- |
xor eax,eax |
mov ax,[esi] |
248,15 → 207,12 |
mov bx,word[esi+2] |
mov [Picture_SizeX],eax |
mov [Picture_SizeY],ebx |
jmp exit_type |
;--------------------------------------------------------------------- |
no_gif_file: |
jmp no_unpakcing_file |
;--------------------------------------------------------------------- |
exit_type: |
;---------------------------------------------------------- |
;Get momory for unpacking picture and for picture's bufers |
;---------------------------------------------------------- |
264,13 → 220,10 |
;---------------------------------------------------------- |
;--------------------Load file in memory------------------- |
;---------------------------------------------------------- |
mov eax,file_path |
mov ebx,[PointerToCopyPicture] |
add ebx,1000 |
call load_file |
;---------------------------------------------------------- |
;-------------------Unpacking picture---------------------- |
;---------------------------------------------------------- |
282,56 → 235,50 |
cmp [type],'BM' |
jne no_unpakcing_bmp_file |
;BMP DECODER |
call bmptoimg |
mov [save_flag],1 |
jmp draw_1 |
;--------------------------------------------------------------------- |
no_unpakcing_bmp_file: |
cmp [type],'GI' |
jne no_unpakcing_file |
;GIF DECODER |
sub edi,8 |
call ReadGIF |
mov [save_flag],1 |
jmp draw_1 |
;--------------------------------------------------------------------- |
no_unpakcing_file: |
call load_icons |
draw_1: |
call drawwin |
open_2: |
mov [Scroll1CoordinatX],9 |
mov [Scroll2CoordinatY],89 |
and [number_panel],0 |
and [number_menu],0 |
jmp still |
;--------------------------------------------------------------------- |
no_open: |
;<<<<<<<<<<<SAVE>>>>>>>>>>>> |
cmp [number_menu],3 |
jne no_save_ |
mov al,[save_flag] |
test al,al |
jz no_save_file |
jmp save_enter |
;--------------------------------------------------------------------- |
no_save_file: |
and [number_panel],0 |
and [number_menu],0 |
jmp still |
;--------------------------------------------------------------------- |
no_save_: |
;<<<<<<<<<SAVE AS>>>>>>>>>>> |
cmp [number_menu],4 |
jne no_save |
362,15 → 309,12 |
cmp [OpenDialog_data.status],1 |
jne still |
;--------------------------------------------------------------------- |
save1: |
save_enter: |
mov eax,40 |
mov ebx,100111b |
mcall |
mcall 40,100111b |
call analizing_picture_to_palette |
;eax => number of colors in picture |
mov ebx,[PointerToPicture] |
mov ecx,[PointerToEditBufer] |
383,9 → 327,6 |
mov eax,file_path |
mov ecx,ebx |
mov ebx,[PointerToEditBufer] |
push eax |
push ebx |
push ecx |
call save_file |
393,17 → 334,14 |
and [number_panel],0 |
and [number_menu],0 |
call drawwin |
jmp still |
save2: |
and [number_panel],0 |
and [number_menu],0 |
jmp still |
;--------------------------------------------------------------------- |
;save2: |
; and [number_panel],0 |
; and [number_menu],0 |
; jmp still |
;--------------------------------------------------------------------- |
no_save: |
;<<<<<<EXIT>>>>>>> |
cmp [number_menu],5 |
jne no_exit_program |
410,16 → 348,13 |
mov eax,-1 |
mcall |
;--------------------------------------------------------------------- |
no_exit_program: |
no_file: |
;|||||||||||||||||||||||||||||EDIT||||||||||||||||||||||||| |
;<<<<<<<<<<UNDO>>>>>>>>>> |
cmp [number_panel],6 |
jne no_edit |
jne still ;no_edit |
cmp [number_menu],1 |
jne no_undo |
430,7 → 365,6 |
mov esi,[PointerToCopyPicture] |
no_one____: |
cmp [number_undo],2 |
jne no_two____ |
437,7 → 371,6 |
mov esi,[PointerToCopyPicture2] |
no_two____: |
mov edi,[PointerToPicture] |
mov ecx,[Picture_SizeX] |
imul ecx,[Picture_SizeY] |
454,14 → 387,12 |
mov [number_undo],1 |
no_null_undo: |
and [number_panel],0 |
and [number_menu],0 |
jmp still |
;--------------------------------------------------------------------- |
no_undo: |
;<<<<<<<<<<COPY>>>>>>>>>> |
cmp [number_menu],2 |
jne no_copy |
481,7 → 412,6 |
mov [rectangular_shade_x],eax |
no_remove_x_copy: |
cmp ebx,[rectangular_shade_y] |
jl no_remove_y_copy |
490,7 → 420,6 |
mov [rectangular_shade_y],ebx |
no_remove_y_copy: |
mov eax,[OldX] |
mov ebx,[OldY] |
mov ecx,[rectangular_shade_x] |
513,7 → 442,6 |
mov [Dx_],-1 |
no_signum_fill_r_x_copy: |
sub edx,ebx |
jnz no_signum_fill_r_y_copy |
520,35 → 448,28 |
mov [Dy_],-1 |
no_signum_fill_r_y_copy: |
mov ebx,[rectangular_shade_y] |
sub ebx,edi |
mov edx,[PointerToEditBufer] |
mov [y],edi |
loop_fill_rectangle_y_copy: |
mov [x],esi |
mov [x],esi |
loop_fill_rectangle_x_copy: |
push esi |
push edi |
push esi edi |
mov eax,[PointerToPicture] |
mov ebx,[Picture_SizeX] |
mov esi,[x] |
mov edi,[y] |
call GetColorOfPixel |
mov [edx],ax |
shr eax,16 |
mov [edx+2],al |
pop edi esi |
pop edi |
pop esi |
add edx,3 |
mov eax,[x] |
add eax,[Dx_] |
mov [x],eax |
568,11 → 489,9 |
and [number_panel],0 |
and [number_menu],0 |
mov [DrawSprite_flag],1 |
jmp still |
;--------------------------------------------------------------------- |
no_copy: |
;<<<<<<<<<<PASTE>>>>>>>> |
cmp [number_menu],3 |
jne no_paste |
594,7 → 513,6 |
mov [rectangular_shade_x],eax |
no_remove_x_paste: |
cmp ebx,[rectangular_shade_y] |
jl no_remove_y_paste |
603,7 → 521,6 |
mov [rectangular_shade_y],ebx |
no_remove_y_paste: |
mov eax,[OldX] |
mov ebx,[OldY] |
mov ecx,[rectangular_shade_x] |
626,7 → 543,6 |
mov [Dx_],-1 |
no_signum_fill_r_x_paste: |
sub edx,ebx |
jnz no_signum_fill_r_y_paste |
633,30 → 549,23 |
mov [Dy_],-1 |
no_signum_fill_r_y_paste: |
mov edx,[PointerToEditBufer] |
mov [y],edi |
loop_fill_rectangle_y_paste: |
mov [x],esi |
mov [x],esi |
loop_fill_rectangle_x_paste: |
push esi |
push edi |
push esi edi |
mov ecx,[edx] |
and ecx,0xffffff ;color |
mov eax,[PointerToPicture] |
mov ebx,[Picture_SizeX] |
mov esi,[x] |
mov edi,[y] |
call PutPixel |
pop edi esi |
pop edi |
pop esi |
add edx,3 |
mov eax,[x] |
669,7 → 578,6 |
add eax,[Dy_] |
mov [y],eax |
cmp eax,[rectangular_shade_y] |
jl loop_fill_rectangle_y_paste |
call MovePictureToWorkScreen |
676,11 → 584,9 |
and [number_panel],0 |
and [number_menu],0 |
mov [Paste_flag],1 |
jmp still |
;--------------------------------------------------------------------- |
no_paste: |
;<<<<<<<<<<CUT>>>>>>>>>> |
cmp [number_menu],4 |
jne no_cut |
702,7 → 608,6 |
mov [rectangular_shade_x],eax |
no_remove_x_cut: |
cmp ebx,[rectangular_shade_y] |
jl no_remove_y_cut |
711,7 → 616,6 |
mov [rectangular_shade_y],ebx |
no_remove_y_cut: |
mov eax,[OldX] |
mov ebx,[OldY] |
mov ecx,[rectangular_shade_x] |
734,7 → 638,6 |
mov [Dx_],-1 |
no_signum_fill_r_x: |
sub edx,ebx |
jnz no_signum_fill_r_y |
741,16 → 644,13 |
mov [Dy_],-1 |
no_signum_fill_r_y: |
mov [y],edi |
mov [y],edi |
loop_fill_rectangle_y: |
mov [x],esi |
mov [x],esi |
loop_fill_rectangle_x: |
push esi |
push edi |
push esi edi |
mov eax,[PointerToPicture] |
mov ebx,[Picture_SizeX] |
mov ecx,dword 0xffffff |
757,10 → 657,8 |
mov esi,[x] |
mov edi,[y] |
call PutPixel |
pop edi esi |
pop edi |
pop esi |
mov eax,[x] |
add eax,[Dx_] |
mov [x],eax |
779,27 → 677,24 |
and [number_panel],0 |
and [number_menu],0 |
jmp still |
;--------------------------------------------------------------------- |
no_cut: |
;<<<<<<CLEARE ALL>>>>>> |
cmp [number_menu],5 |
jne no_cleare_all |
call cleare_work_arrea |
call MovePictureToWorkScreen |
and [number_panel],0 |
and [number_menu],0 |
jmp still |
;--------------------------------------------------------------------- |
no_cleare_all: |
;<<<<<<TO ALLOCATE ALL>>>>>> |
cmp [number_menu],6 |
jne no_to_allocate_all |
jne still ;no_to_allocate_all |
mov [OldX],1 |
mov [OldY],1 |
818,12 → 713,8 |
;call TakeButtonInstruments |
;call MovePictureToWorkScreen |
jmp still |
no_to_allocate_all: |
no_edit: |
jmp still |
ret |
;--------------------------------------------------------------------- |
;no_to_allocate_all: |
;no_edit: |
; jmp still |
;--------------------------------------------------------------------- |
/programs/media/animage/trunk/palette.inc |
---|
2,7 → 2,6 |
;-------analizing picture to palette------------------------ |
;----------------------------------------------------------- |
analizing_picture_to_palette: |
mov eax,[Picture_SizeX] |
mov ebx,[Picture_SizeY] |
imul eax,ebx |
19,14 → 18,15 |
analizing_to_palette: |
mov eax,[edx] |
and eax,0xffffff |
mov edi,esi |
mov ebp,[PointerToPalette] |
next_color_in_palette: |
mov ebx,[ebp] |
and ebx,0xffffff |
cmp ebx,eax ;this is color have in palette |
je exit_loop_palette |
add ebp,4 |
dec edi |
jnz next_color_in_palette |
34,6 → 34,7 |
inc esi |
cmp esi,256 ;256 colors |
ja more_than_256_colors |
mov ebp,[PointerToPalette] |
mov ebx,esi |
dec ebx |
44,13 → 45,10 |
mov [ebp+2],al |
exit_loop_palette: |
add edx,3 |
dec ecx |
jnz analizing_to_palette |
more_than_256_colors: |
mov eax,esi |
ret |
/programs/media/animage/trunk/panel_data.inc |
---|
1,7 → 1,7 |
;********************************************************** |
;------------------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_y db 'Y=' |
new_text1 db 'PICTURE SIZE X' |
/programs/media/animage/trunk/panel_engen.inc |
---|
3,14 → 3,11 |
;------------------------------------------------- |
panel_interraction: |
;>>>>>>>>>>>>>>>>>>>>>>>>>> |
mov eax,18 |
mov ebx,14 |
;mcall |
; mcall 18,14 |
and [Panel_flag],0 |
;collision with text on panel |
next_columnus_text: |
mov eax,[edi] |
mov ebx,[edi+4] |
sub eax,10 |
34,10 → 31,9 |
mov edi,[button_menu_size_y] |
mov esi,[button_menu_size_x] |
call columnus |
pop edi |
pop edi |
mov esi,7 |
test eax,eax |
jz no_columnus_text |
44,23 → 40,18 |
mov esi,1 |
mov [Panel_flag],1 |
call GetMouseClick |
test eax,eax |
jz no_mouse_pressed |
mov eax,18 |
mov ebx,14 |
;mcall |
; mcall 18,14 |
call print_panel_menu |
jmp print_panel_menu |
no_mouse_pressed: |
no_columnus_text: |
mov eax,[Icon_text_x] |
mov ebx,[Icon_text_y] |
mov ecx,[button_menu_size_x] ;------------------------- |
mov ecx,[button_menu_size_x] |
mov edx,[button_menu_size_y] |
call draw_volume_rectangle |
69,32 → 60,26 |
mov [counter],7 |
mov edi,panel_text |
call print_panel_text |
pop edi |
pop [counter] |
dec [counter] |
jnz next_columnus_text |
ret |
jmp still |
;--------------------------------------------------------- |
;-----draw panel menu(main engin of panel)---------------- |
;--------------------------------------------------------- |
print_panel_menu: |
push [counter] |
;delit main buttons(some time) |
mov [counter],10 |
next_icon_delit1: |
mov eax,8 |
mov edx,[counter] |
add edx,11100000000000000000000000000000b |
mcall |
mcall 8 |
inc [counter] |
cmp [counter],30 |
jl next_icon_delit1 |
102,13 → 87,10 |
mov [counter],40 |
next_icon_delit2: |
mov eax,8 |
mov edx,[counter] |
add edx,11100000000000000000000000000000b |
mcall |
mcall 8 |
inc [counter] |
cmp [counter],45 |
jl next_icon_delit2 |
116,28 → 98,22 |
mov [counter],45 |
next_icon_delit3: |
mov eax,8 |
mov edx,[counter] |
add edx,11100000000000000000000000000000b |
mcall |
mcall 8 |
inc [counter] |
cmp [counter],50 |
jl next_icon_delit3 |
;delit buttons of palette |
mov eax,8 |
mov edx,51 |
add edx,11100000000000000000000000000000b |
mcall |
mcall 8 |
;delit buttons of color |
mov eax,8 |
mov edx,52 |
add edx,11100000000000000000000000000000b |
mcall |
mcall 8 |
pop [counter] |
157,8 → 133,6 |
pop esi |
calculate_counter_menu: |
;calculate menu counter |
mov eax,[counter] |
dec eax |
169,15 → 143,12 |
call GetMouseCoordinats |
and [menu_counter],0 |
push esi |
push edi |
push esi edi |
;ᣫ ¦¨¢ ¨¥ ¨¬ 樨 >>>>>>>>>>>>>>>>>> |
mov eax,18 |
mov ebx,14 |
;mcall |
; mcall 18,4 |
menu_loop: |
mov eax,[menu_coordinat_x] |
mov ebx,36 |
mov ecx,[MouseX] |
197,7 → 168,6 |
mov esi,1 |
no_columnus_menu_text: |
mov eax,[menu_coordinat_x] |
mov ebx,36 |
mov ecx,[menu_size_x] |
209,11 → 179,9 |
call draw_volume_rectangle |
add [menu_counter],20 |
dec [counter_menu] |
jnz menu_loop |
;print menu text |
push [counter] |
mov esi,[counter] |
224,26 → 192,18 |
mov [counter],eax |
call print_panel_text |
pop [counter] |
pop edi |
pop esi |
pop edi esi |
menu_still: |
mov eax,10 |
mcall |
mov eax,2 |
mcall |
mov eax,17 |
mcall |
mcall 10 |
mcall 2 |
mcall 17 |
call GetMouseClick |
test eax,eax |
jz calculate_counter_menu |
call GetMouseCoordinats |
;calculate menu counter |
mov eax,[counter] |
dec eax |
254,12 → 214,9 |
and [menu_counter],0 |
and [counter_11],0 |
push esi |
push edi |
push esi edi |
menu_loop2: |
mov eax,[menu_coordinat_x] |
mov ebx,36 |
mov ecx,[MouseX] |
273,7 → 230,6 |
call columnus |
inc [counter_11] |
test eax,eax |
jz no_columnus_menu_text2 |
281,40 → 237,30 |
mov [number_menu],esi |
no_columnus_menu_text2: |
add [menu_counter],20 |
dec [counter_menu] |
jnz menu_loop2 |
pop edi |
pop esi |
pop edi esi |
mov eax,5 |
mov ebx,15 |
mcall |
mcall 5,15 |
push [counter] |
pushad |
pusha |
call drawwin |
popad |
popa |
pop [counter] |
mov eax,[counter] |
mov [number_panel],eax |
call TakeInstruments |
jmp still |
jmp TakeInstruments |
;--------------------------------------------------------- |
;------print mouse position on panel---------------------- |
;--------------------------------------------------------- |
PrintMousePos: |
pushad |
mov eax,[Window_SizeX] |
sub eax,75 |
mov ebx,20+15+6 |
347,8 → 293,6 |
mov esi,2 |
call print_text |
mov eax,47 |
mov ebx,4*65536 |
mov ecx,[ScreenX] |
add ecx,[PosX] |
mov edx,[Window_SizeX] |
356,10 → 300,8 |
shl edx,16 |
add edx,20+15+6+6 |
and esi,0 |
mcall |
mcall 47,<4,0> |
mov eax,47 |
mov ebx,4*65536 |
mov ecx,[ScreenY] |
add ecx,[PosY] |
mov edx,[Window_SizeX] |
366,92 → 308,16 |
sub edx,55 |
shl edx,16 |
add edx,20+15+6+18+1+6 |
and esi,0 |
mcall |
popad |
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_panel_text: |
next_panel_text: |
mov eax,[edi] |
mov ebx,[edi+4] |
;xor ecx,ecx |
473,7 → 339,6 |
;------------draw lines of scoll--------------------------- |
;---------------------------------------------------------- |
draw_scrollers: |
mov edi,[CounterX] |
mov eax,[Scroll1CoordinatX] |
mov ebx,[Window_SizeY] |
487,17 → 352,13 |
mov [Scroll1MaxSizeY],edx |
mov [Scroll1MaxSizeX],ecx |
imul ecx,edi |
push eax |
push ebx |
push edx |
push eax ebx edx |
mov eax,ecx |
mov ebx,[Picture_SizeX] |
cdq |
idiv ebx |
mov ecx,eax |
pop edx |
pop ebx |
pop eax |
pop edx ebx eax |
mov [Scroll1SizeX],ecx |
mov edi,[Scroll1MaxSizeX] |
sub edi,ecx |
517,15 → 378,13 |
mov [Scroll2MaxSizeY],edx |
imul edx,[CounterY] |
push eax |
push ebx |
push eax ebx |
mov eax,edx |
mov ebx,[Picture_SizeY] |
cdq |
idiv ebx |
mov edx,eax |
pop ebx |
pop eax |
pop ebx eax |
mov [Scroll2SizeY],edx |
mov edi,[Scroll2MaxSizeY] |
sub edi,edx |
534,7 → 393,6 |
call draw_volume_rectangle |
ret |
ret |
button_menu_size_x dd 0 |
button_menu_size_y dd 0 |
/programs/media/animage/trunk/screen.inc |
---|
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 |